fork download
  1.  
  2. #include <iostream>
  3. using namespace std;
  4. #include <bits/stdc++.h>
  5. #include<utility>
  6. #include <algorithm>
  7. #include<iterator>
  8. #define go return 0
  9. #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  10. #define rep(i,n) for(int i=0;i<n;++i)
  11. #define rep(j,n) for(int j=0;j<n;++j)
  12. #define REP(i,n) for(int i=1;i<=n;++i)
  13. #define all(v) ((v).begin()), ((v).end())
  14. #define len(s) ((int)s.size())
  15. #define F first
  16. #define S second
  17. #define pb push_back
  18. #define pf push_front
  19. #define m_p make_pair
  20. typedef long long ll;
  21. typedef double db;
  22. typedef vector<ll> ve;
  23. typedef vector<pair<string, ll> > vepa;
  24. typedef set<ll>se;
  25. typedef map<ll,ll> mpp;
  26. const ll N=1e6+5,OO=1e14,MOD=1e9+7;
  27. const int di[]={1,-1,0,0,-1,1};
  28. const int dj[]={0,0,1,-1,-1,1};
  29. ll TC,n,m,k,a,b,c,d,x,y,l,r,cnt,ans,mx,mn,arr[N];
  30. char grid[600][600];
  31. bool vis[1005],mark[1005],f,ff;
  32. ve adj[N],v;
  33. void dfs1(int node=0){
  34. vis[node]=1;
  35. for(auto it:adj[node])if(!vis[it])dfs1(it);
  36. }
  37. void dfs2(int node){
  38. mark[node]=1;
  39. for(auto it:adj[node])if(!mark[it])dfs2(it);
  40. }
  41. int main(){
  42. IOS;
  43. //freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
  44. cin>>n;
  45. ve v;
  46. rep(i,n){
  47. cin>>a>>c;
  48. v.pb(a);
  49. rep(j,c){
  50. cin>>b;
  51. adj[a].pb(b);
  52. }
  53. }
  54. dfs1();
  55. for(auto it:v){
  56. if(it==0)continue;
  57. if(!vis[it]){f=1;cout<<"UNREACHABLE "<<it<<"\n"; }
  58. dfs2(it);
  59. if(!mark[0]){f=1; cout<<"TRAPPED "<<it<<"\n"; }
  60. rep(j,1005)mark[j]=0;
  61. }
  62. if(!f)cout<<"NO PROBLEMS";
  63. go;
  64. }
  65.  
Success #stdin #stdout 0.01s 27004KB
stdin
Standard input is empty
stdout
NO PROBLEMS