日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

POJ 3687 Labeling Balls(拓扑序列)

發(fā)布時(shí)間:2025/7/25 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 3687 Labeling Balls(拓扑序列) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Labeling Balls?

大意:n個(gè)重量分別為1-n的小球,給定一些小球間的重量關(guān)系。 在符合重量關(guān)系的前提下,先輸出編號(hào)小的球。

?

思路:也是一道很簡(jiǎn)單的拓?fù)渑判?#xff0c;不過(guò)要倒著來(lái),注意一下要判重邊。

?

1 #include <string.h> 2 #include <iostream> 3 using namespace std; 4 5 int Map[210][210], indegree[210], Ans[210]; 6 int n, m, x, y; 7 int i, j; 8 9 void Topo() 10 { 11 for(i = n; i >= 1; i--) 12 { 13 for(j = n; j >= 1; j--) 14 { 15 if(indegree[j] == 0) 16 { 17 indegree[j]--; 18 Ans[j] = i; 19 for(int k = 1; k <= n; k++) 20 { 21 if(Map[j][k] == 1) 22 { 23 indegree[k]--; 24 } 25 } 26 break; 27 } 28 } 29 if(j < 1) 30 { 31 break; 32 } 33 } 34 if(i >= 1) 35 cout << "-1" << endl; 36 else 37 { 38 for(i = 1; i <= n; i++) 39 { 40 if(i < n) 41 { 42 cout << Ans[i] << " "; 43 } 44 else 45 { 46 cout << Ans[i] << endl; 47 } 48 } 49 } 50 } 51 52 void Solve() 53 { 54 int cases; 55 cin >> cases; 56 while(cases--) 57 { 58 memset(Map, 0, sizeof(Map)); 59 memset(indegree, 0, sizeof(indegree)); 60 cin >> n >> m; 61 for(i = 1; i <= m; i++) 62 { 63 cin >> x >> y; 64 if(!Map[y][x]) 65 { 66 Map[y][x] = 1; 67 indegree[x]++; 68 } 69 } 70 Topo(); 71 } 72 } 73 74 int main() 75 { 76 Solve(); 77 78 return 0; 79 } Labeling Balls

?

轉(zhuǎn)載于:https://www.cnblogs.com/Silence-AC/p/3534723.html

總結(jié)

以上是生活随笔為你收集整理的POJ 3687 Labeling Balls(拓扑序列)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。