Description編程
Input數組
Outputui
Sample Inputspa
4 3 1 2 2 3 4 3
Sample Outputcode
1 2 4 3
#include<stdio.h> #include<string.h> int map[502][502]; int visit[502];//標記數組 int in[502];頂點入度數組 int main() { int n, m, i, j, x, y; while(~scanf("%d %d", &n, &m)) { memset(map, 0, sizeof(map)); memset(visit, 0, sizeof(visit)); memset(in, 0, sizeof(in)); for(i=1; i<=m; i++) { scanf("%d %d", &x, &y); if(map[x][y] == 0)//當出現重邊的時候,可保證度再也不增長 { in[y]++; map[x][y] = 1; } } int leap; leap = n; while(leap) { for(i=1; i<=n; i++)//刪點 { if(visit[i]==0 && in[i] == 0) { visit[i] = 1; printf("%d", i); leap--; if(leap!=0) printf(" "); else printf("\n"); break; } } for(j=1; j<=n; j++)//減度(刪邊) { if(map[i][j]==1) in[j]--; } } } return 0; }