Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ull unsigned long long
  5. #define pb push_back
  6. #define mem(arr,val)    memset(arr,val,sizeof(arr))
  7. #define mp make_pair
  8. #define pii pair<int,int>
  9. #define F first
  10. #define S second
  11. #define sz(x) (int)(x).size()
  12. #define nopos string::npos
  13. #define fr(i,a,b) for(i=a;i<=b;i++)
  14. #define frn(i,a,b) for(i=a;i>=b;i--)
  15.  
  16. int t,n,m,x,k;
  17. vector<int> edge[100000+7];
  18. int level[100000+7];
  19. bool visited[100000+7];
  20. bool fl=0;
  21.  
  22. void bfs(int u)
  23. {
  24.     int i;
  25.     queue<int> q;
  26.     q.push(u);
  27.     visited[u]=1;
  28.  
  29.     while(!q.empty())
  30.     {
  31.         u=q.front();
  32.         q.pop();
  33.  
  34.         if(edge[u].size()==0)
  35.         {
  36.             if(level[u]%2==1)
  37.                 fl=1;
  38.         }
  39.  
  40.         int flag=0;
  41.  
  42.         for(i=0; i<edge[u].size(); i++)
  43.         {
  44.             int v=edge[u][i];
  45.             if(visited[v]==0)
  46.             {
  47.                 flag=1;
  48.                 visited[v]=1;
  49.                 level[v]=level[u]+1;
  50.                 q.push(v);
  51.             }
  52.  
  53.         }
  54.  
  55.     }
  56. }
  57.  
  58. int main()
  59. {
  60.     int i,j,p;
  61.  
  62.     cin>>t;
  63.     fr(i,1,t)
  64.     {
  65.         fl=0;
  66.         scanf("%d %d %d",&n,&m,&x);
  67.  
  68.         memset(visited,0,sizeof(visited));
  69.  
  70.         while(m--)
  71.         {
  72.             int u,v;
  73.             scanf("%d %d",&u,&v);
  74.             edge[u].pb(v);
  75.         }
  76.  
  77.  
  78.  
  79.         for(j=0; j<edge[x].size(); j++)
  80.         {
  81.             memset(visited,0,sizeof(visited));
  82.  
  83.             visited[x]=1;
  84.             level[edge[x][j]]=1;
  85.  
  86.             bfs(edge[x][j]);
  87.  
  88.             if(fl)
  89.                 break;
  90.         }
  91.         printf("Case %d: ",i);
  92.         printf(fl?"Yes\n":"No\n");
  93.  
  94.     }
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement