http://acm.hdu.edu.cn/showproblem.php?pid=3342
题意:判断奶牛的话是否有冲突。
注意:有多组序列的时候,只要不冲突即可。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int NM=105;
int a[NM][NM],indu[NM],n;
bool Tuopu(){
int i,j,k,ling;
memset(indu,0,sizeof(indu));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
if(a[i][j]) indu[j]++;
}
for(i=1;i<=n;i++){
ling=0;k=1;
for(j=1;j<=n;j++){
if(indu[j]==0) ling++,k=j;
}
if(ling==0) return false;
indu[k]--;
for(j=1;j<=n;j++){
if(a[k][j]) indu[j]--;
}
}
return true;
}
int main()
{
int m,i,x,y;
while(scanf("%d%d",&n,&m) && n){
memset(a,0,sizeof(a));
for(i=0;i<m;i++){
scanf("%d%d",&x,&y);
a[x+1][y+1]=1;
}
if(Tuopu()) printf("YES\n");
else printf("NO\n");
}
return 0;
}