标签:des c style class blog code
4 3 1 2 2 3 4 3
1 2 4 3
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=500+10;
int inDev[MAXN];
bool visited[MAXN];
bool g[MAXN][MAXN];
int n,m;
void init()
{
memset(g,0,sizeof(g));
memset(visited,0,sizeof(visited));
memset(inDev,0,sizeof(inDev));
}
void input()
{
int a,b;
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
if(!g[a][b])
{
g[a][b]=true;
++inDev[b];
}
}
}
void topSort()
{
int i,tag=0;
while(tag<n)
{
for(i=1;i<=n;i++)
if(!visited[i]&&0==inDev[i])
break;
if(tag)
printf(" ");
++tag;
printf("%d",i);
visited[i]=true;
for(int j=1;j<=n;j++)
if(g[i][j])
--inDev[j];
}
printf("\n");
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
input();
topSort();
}
return 0;
}2 1 1 2 2 2 1 2 2 1
1777 -1
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
const int MAXN=10000+10;
vector<int>g[MAXN];
int inDev[MAXN];
int money[MAXN];
int n,m;
void init()
{
for(int i=0;i<MAXN;i++)
{
g[i].clear();
money[i]=888;
}
memset(inDev,0,sizeof(inDev));
}
void input()
{
int a,b;
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
g[b].push_back(a);
++inDev[a];
}
}
void topSort()
{
queue<int>q;
int tag=0,ans=0;
for(int i=1;i<=n;i++)
{
if(inDev[i]==0)
q.push(i);
}
while(!q.empty())
{
++tag;
int now=q.front();
ans+=money[now];
q.pop();
for(int i=0;i<g[now].size();i++)
{
int next=g[now][i];
if(--inDev[next]==0)
{
q.push(next);
money[next]=money[now]+1;
}
}
}
if(tag!=n)
ans=-1;
printf("%d\n",ans);
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
input();
topSort();
}
return 0;
}hdu1285+hdu2467(拓扑排序),布布扣,bubuko.com
标签:des c style class blog code
原文地址:http://blog.csdn.net/xiaofengcanyuexj/article/details/29172285