本文共 817 字,大约阅读时间需要 2 分钟。
反向建图
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int INF=0xfffffff;int main(){ int n,m,Icase; int vis[300]; int G[300][300]; int in[300]; int topo[300]; while(cin>>Icase){ while(Icase--){ memset(topo,0,sizeof(topo)); memset(G,0,sizeof(G)); memset(vis,0,sizeof(vis)); memset(in,0,sizeof(in)); cin>>n>>m; for(int i=0;i >a>>b; if(!G[a][b]){ in[a]++; G[a][b]=1; } } int flag=1; for(int i=n;i>=1;i--){ int sign; bool t=false; for(int j=1;j<=n;j++){ if(in[j]==0&&!vis[j]){ sign=j; t=true; } } if(!t){ flag=0;break; } // vis[sign]=1; topo[i]=sign; // cout< <
转载于:https://www.cnblogs.com/yigexigua/p/3845108.html