第一道拓扑
/** HDU 1285 拓扑 A->B直接建图AC代码 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #define MAXN 510 #define INF 1<<29 using namespace std; int n,m,mp[MAXN][MAXN],in[MAXN]; void init() { memset(mp,0,sizeof(mp)); memset(in,0,sizeof(in)); } int main() { int a,b; while(~scanf("%d%d",&n,&m)) { init(); for(int i=0; i<m; i++) { scanf("%d%d",&a,&b); if(!mp[a][b]) { mp[a][b]=1; in[b]++; } } for(int i=1; i<=n; i++)///选出n个点算选完 { for(int j=1; j<=n; j++)///选入度为0的点 { if(in[j]==0) { in[j]--; if(i==n)printf("%d\n",j); else printf("%d ",j); for(int k=1; k<=n; k++) ///j到达的点入度-1 { if(mp[j][k]) in[k]--; } break; } } } } return 0; }
时间: 2024-11-03 05:34:34