3 2 3 1 2 1 3 3 3 2 2 1 1 3
YES NO
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int map[150][150];
int n,m;
void flody()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(map[i][k]&&map[k][j])
map[i][j]=1;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(map,0,sizeof(map));
int sign=0;
int a,b;
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
if(a==b)
{
sign=1;
continue;
}
map[a][b]=1;
}
if(sign)
printf("NO\n");
else
{
flody();
for(int i=1;i<=n;i++)
if(map[i][i])
sign=1;
if(sign)
printf("NO\n");
else
printf("YES\n");
}
}
return 0;
}
hdu 5154 Harry and Magical Computer(BestCoder Round #25)
原文:http://blog.csdn.net/caduca/article/details/42553331