#include <iostream> #include <vector> #include <queue> using namespace std; int m,n; bool tuobu(int indegree[],vector<int>adj[]){ int num=0; queue<int> q; for(int i=1;i<=n;i++){ if(indegree[i]==0){ q.push(i); } } while(!q.empty()){ int u=q.front(); q.pop(); for(int i=0;i<adj[u].size();i++){ int v=adj[u][i]; indegree[v]--; if(indegree[v]==0){ q.push(v); } } num++; } if(num==n) return true; else return false; } int main(){ while(cin>>n>>m){ vector<int> adj[n+1]; int indegree[n+1]={0}; indegree[0]=-1; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; adj[a].push_back(b); indegree[b]+=1; } if(tuobu(indegree,adj)==true) cout<<"RIGHT"<<endl; else cout<<"ERROR"<<endl; } } |
Double click to view unformatted code.