日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 3687 Labeling Balls(拓扑序列)

發布時間:2025/7/25 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 3687 Labeling Balls(拓扑序列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Labeling Balls?

大意:n個重量分別為1-n的小球,給定一些小球間的重量關系。 在符合重量關系的前提下,先輸出編號小的球。

?

思路:也是一道很簡單的拓撲排序,不過要倒著來,注意一下要判重邊。

?

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

?

轉載于:https://www.cnblogs.com/Silence-AC/p/3534723.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。