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;
}

本文介绍了一种通过拓扑排序解决HDU 3342问题的方法,该问题要求判断多组奶牛的话语是否存在冲突。采用邻接矩阵和入度数组实现拓扑排序,并通过C++代码示例详细展示了算法的具体实现过程。
242

被折叠的 条评论
为什么被折叠?



