1. 程式人生 > 其它 >2021級ACM班&2022年寒假集訓《資料結構》專題12--拓撲排序和關鍵路徑

2021級ACM班&2022年寒假集訓《資料結構》專題12--拓撲排序和關鍵路徑

A - 資料結構實驗之圖論十:判斷給定圖是否存在合法拓撲序列

題目連結 https://acm.sdut.edu.cn/onlinejudge3/contests/3990/problems/A

判定拓撲序列模板題

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,flag;
 4 int mapp[1010][1010];
 5 int vis[1010];
 6 int in[1010];
 7 
 8 void topsort()
 9 {
10     flag=n;
11     for(int i=1; i<=n; i++)
12 { 13 for(int j=1; j<=n; j++) 14 { 15 if(in[j]==0 && vis[j]==0) 16 {//找入度為0且沒有被訪問過的點 17 flag--; 18 vis[j]=1; 19 for(int k=1; k<=n; k++)//遍歷尋找與被刪除點有關的結點,使其入度-1 20 if(mapp[j][k]) 21 in
[k]--; 22 break;//每次只找一個度為0的點 23 } 24 } 25 } 26 if(flag) cout<<"NO"<<endl; 27 else cout<<"YES"<<endl; 28 } 29 30 int main() 31 { 32 while(cin>>n>>m) 33 { 34 memset(mapp,0,sizeof(mapp)); 35 memset(vis,0
,sizeof(vis)); 36 memset(in,0,sizeof(in)); 37 while(m--) 38 { 39 int a,b; 40 cin>>a>>b; 41 mapp[a][b]=1; 42 in[b]++; 43 } 44 topsort(); 45 } 46 return 0; 47 }