View Code of Problem 131

#include <iostream>
#include <vector>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <set>
using namespace std;
int main(){
	int n,m;
	while(cin>>n>>m){
		vector<vector<int>> num(n,vector<int>(n,0));
		 int a,b;
		 int de[n]={0},vi[n]={0};
		 for(int i=0;i<m;i++){
		 	cin>>a>>b;
		 	num[a-1][b-1]=1;
		 	de[a-1]++;
		}//行都为0代表没有先修课 
		bool flag=true;
		for(int k=0;k<n;k++){
			for(int i=0;i<n;i++){
				if(de[i]==0&&vi[i]==0){//入度为0,删除连接他的边 
					vi[i]=1;
					for(int j=0;j<n;j++)
						if(num[j][i]==1){
							num[j][i]=0;
							de[j]--;
						}
				}
			}
		}
		for(int i=0;i<n;i++)
			if(de[i]>0){
				flag=false;
				break;
			}
		if(flag==false)
			cout<<"ERROR"<<endl;
		else cout<<"RIGHT"<<endl;
	} 
    return 0;
}

Double click to view unformatted code.


Back to problem 131