View Code of Problem 131

#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.


Back to problem 131