POJ-3687

来源:互联网 发布:qq飞车麦凯伦数据 编辑:程序博客网 时间:2024/06/03 18:41
#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>#include <vector>using namespace std;#define maxn 5500#define maxm 22000int maps[251][251];int du[222];int vis[220];int shu[220];int viss[220];vector<int>vec[220];int main(){    int T,i,a,b,n,m;    scanf("%d",&T);    while(T--)    {        memset(maps,0,sizeof(maps));        scanf("%d%d",&n,&m);        memset(du,0,sizeof(du));        memset(vis,0,sizeof(vis));        for(i=1;i<=n;i++)vec[i].clear();        for(i=1;i<=m;i++)        {            scanf("%d%d",&a,&b);            maps[a][b]=1;        }        int j;        for(i=1;i<=n;i++)        {            for(j=1;j<=n;j++)            {                if(maps[i][j])                {                    du[i]++;                }            }        }        int ns=n+1;        while(1)        {            for(i=n;i>=1;i--)            {                if(vis[i]==0&&du[i]==0)break;            }            if(i<1)break;            int x=i;            ns--;            vis[x]=1;            shu[x]=ns;            for(i=1;i<=n;i++)            {                if(maps[i][x])du[i]--;            }        }        if(ns!=1)cout<<"-1"<<endl;        else        {            for(i=1;i<=n;i++)            {                if(i!=1)cout<<" ";                cout<<shu[i];            }            cout<<endl;        }    }    return 0;}

0 0