Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<vector>
- using namespace std;
- int n,m;
- vector<int> adj[100010];
- int color[100010];
- void printcolor(int line){
- printf("%d : ",line);for(int j=1;j<=n;j++)printf("%d ",color[j]);printf("\n");
- }
- bool dfs(int u){
- // printcolor(u);
- if(color[u] == 1)return true;
- if(color[u] == 2)return false;
- color[u] = 1;
- for(int i=0;i<adj[u].size();i++){
- int v = adj[u][i];
- if(dfs(v))return true;
- }
- color[u] = 2;
- return false;
- }
- int main(){
- scanf("%d %d",&n,&m);
- for(int i=0;i<m;i++){
- int u,v;
- scanf("%d %d",&u,&v);
- adj[u].push_back(v);
- // adj[v].push_back(u);
- }
- bool isCycle = false;
- for(int i=1;i<=n && !isCycle;i++){
- isCycle = dfs(i);
- // printcolor(i);
- }
- printf("%s",(isCycle?"Yes":"No"));
- }
Advertisement
Add Comment
Please, Sign In to add comment