HDU 1285 确定比赛名次 拓扑排序

来源:互联网 发布:心力衰竭能治好吗 知乎 编辑:程序博客网 时间:2024/06/13 08:33

HDU1285


很简单的一道拓扑排序题,但是测试数据可能会给出重复的竞争关系。。。。所以在计算入度之前要加一个判断。。。


#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;int map[515][515],in[515],v[515];int main() {    int n,m,x,y,k;    while(cin>>n>>m) {        memset(map,0,sizeof(map));        memset(in,0,sizeof(in));        memset(v,0,sizeof(v));        k=0;        for(int i=0; i<m; i++) {            cin>>x>>y;            if(!map[x][y]){                map[x][y]=1;                in[y]++;            }        }        for(int j=0; j<n; j++) {            for(int i=1; i<=n; i++)                if(!v[i]&&in[i]==0) {                    k=i;                    break;                }            v[k]=1;            for(int i=1;i<=n;i++){                if(!v[i]&&map[k][i])                    in[i]--;            }            if(j<n-1)cout<<k<<' ';        }        cout<<k<<endl;    }    return 0;}





原创粉丝点击