标签:
Description
Input
Output
Sample Input
Sample Output
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N=1e4+1;
int i,j,k,m,n;
int map[N][N];
int indegre[N];
long long sum;
long long topo()
{
int x=888,flag=0;
for(i=1;i<=n;i++)
{
flag=0;
for(j=1;j<=n;j++)
{
if(indegre[j]==0)
sum=sum+x,flag=1;
}
for(j=1;j<=n;j++)
{
if(indegre[j]==0)
{
indegre[j]--;
for(k=1;k<=n;k++)
{
if(map[k][j]==1)
indegre[k]--;
}
}
}
if(flag==0&&i!=n)
return -1;
else
x++;
}
return sum;
}
int main()
{
int p1,p2;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
memset(map,0,sizeof(map));
memset(indegre,0,sizeof(indegre));
for(i=0;i<m;i++)
{
cin>>p1>>p2;
if(map[p1][p2]==0)
{
map[p1][p2]=1;
indegre[p1]++;
}
}
printf("%lld\n",topo());
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/chen9510/p/4739867.html