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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

检查有向图是否是树

發(fā)布時間:2024/10/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 检查有向图是否是树 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

與無向圖那題一樣,但是需要多考慮一個點是樹入度為0的點只有一個,因此邊的前后順序有了作用,這是和之前題的唯一區(qū)別。

1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 #include <set> 5 #include <map> 6 using namespace std; 7 const int maxn=1e5+5; 8 9 int x; 10 int f[maxn]; 11 int find(int x){ 12 if(x!=f[x]){ 13 f[x]=find(f[x]); 14 } 15 return f[x]; 16 } 17 void init(){ 18 for(int i=0;i<=100000;i++) 19 f[i]=i; 20 } 21 map<int,int>M; 22 set<int> S; 23 int main(){ 24 int a,b;int flag=1; 25 std::ios::sync_with_stdio(false); 26 init(); 27 int cas=1; 28 while(cin>>a>>b){ 29 if(a==-1&&b==-1) break; 30 if(a==0&&b==0) 31 { 32 //cout <<"flag="<<flag<<endl; 33 //cout <<"S.ize"<<S.size()<<endl; 34 if(flag==0) 35 { 36 cout <<"Case "<<cas++<<" is not a tree.\n"; 37 flag=1; 38 } 39 else 40 { 41 //cout <<"in"; 42 int sign;set<int>::iterator it=S.begin(); 43 if(!S.empty()) sign=find(*it),it++; 44 for(;it!=S.end();it++){ 45 if(find(*it)!=sign) flag=0; 46 //cout <<"in"; 47 } 48 49 if(flag) 50 { 51 int num=0; 52 map<int,int>:: iterator iter=M.begin(); 53 //cout <<M.size()<<endl; 54 for(;iter!=M.end();iter++){ 55 //cout <<iter->first<<" "<<iter->second<<endl; 56 if(iter->second==0) num++; 57 } 58 if(num>1) cout <<"Case "<<cas++<<" is not a tree.\n"; 59 else cout <<"Case "<<cas++<<" is a tree.\n"; 60 } 61 else cout <<"Case "<<cas++<<" is not a tree.\n"; 62 } 63 //cout <<"in"; 64 flag=1; 65 S.clear(); 66 M.clear(); 67 init(); 68 } 69 else 70 { 71 S.insert(a);S.insert(b); 72 M[b]=1;if(!M.count(a)) M[a]=0; 73 int fa=find(a); 74 int fb=find(b); 75 //cout <<"root"<<fa<<" "<<fb<<endl; 76 if(fa==fb) 77 { 78 flag=0; 79 }else 80 { 81 f[fb]=fa; 82 } 83 } 84 } 85 86 return 0; 87 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Msmw/p/11266575.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的检查有向图是否是树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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