HDU 3324 Legal or Not

来源:互联网 发布:linux 误删用户恢复 编辑:程序博客网 时间:2024/05/01 21:05
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int map[110][110],into[110],n,m;void toposort(){    for(int i=0; i<n; i++){        for(int j=0; j<n; j++){            if(map[i][j])                into[j]++;        }    }    int flag = 0;    for(int i=0; i<n; i++){        int j;        for(j=0; j<n; j++){            if(into[j] == 0){                into[j]--;                for(int k=0; k<n; k++){                    if(map[j][k]){                        into[k]--;                    }                }                break;            }        }        if(j >= n){///有环即为不合法            flag = 1;            break;        }    }    if(flag)    puts("NO");    else puts("YES");}int main(){//    freopen("in.txt", "r", stdin);    while(scanf("%d%d",&n,&m) != EOF && n){        memset(map, 0, sizeof(map));        memset(into, 0, sizeof(into));        for(int i=0; i<m; i++){            int a,b;            scanf("%d%d",&a,&b);            map[a][b] = 1;        }        toposort();    }    return 0;}

0 0