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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu 1269

發布時間:2024/10/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 1269 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

強連通分量題,用tarjin算法;

這是一道很簡單的tarjin算法題,基本上就是套模板;

貼代碼:

#include<cstdio> #include<vector> #include<cstring> #include<stack> #define maxn 10005 using namespace std; vector<int>ve[maxn]; int dfn[maxn],low[maxn],ans,n,m,nncount; bool instack[maxn],vis[maxn]; stack<int>q; void tarjin(int x) {dfn[x]=low[x]=++nncount;vis[x]=1,instack[x]=1;q.push(x);int l=ve[x].size();for(int i=0; i<l; i++){int v=ve[x][i];if(!vis[v]){tarjin(v);low[x]=min(low[x],low[v]);}else if(instack[v])low[x]=min(low[x],dfn[v]);}if(low[x]==dfn[x]){ans++;int v;do{v=q.top();q.pop();instack[v]=0;}while(v!=x);} }int main() {int x,y;while(scanf("%d%d",&n,&m)&&(m+n)){for(int i=1; i<=n; i++){ve[i].clear();instack[i]=vis[i]=0;}while(!q.empty()) q.pop();for(int i=0; i<m; i++){scanf("%d%d",&x,&y);ve[x].push_back(y);}nncount=ans=0;for(int i=1; i<=n; i++)if(!vis[i]) tarjin(i);if(ans==1) puts("Yes");else puts("No");}return 0; } View Code

?其實這道題還可以用并查集來做;

維護兩個數組,一個找兒子,一個找爸爸就行;

我也是參考別人的代碼寫的;

不過挺不錯的,好好學習了下!

1 #include<cstdio> 2 using namespace std; 3 int f[10005],d[10005],n,m; 4 int find1(int x) 5 { 6 if(x!=1&&f[x]!=x) 7 f[x]=find1(f[x]); 8 return f[x]; 9 } 10 11 int find2(int x) 12 { 13 if(x!=1&&d[x]!=x) 14 d[x]=find2(d[x]); 15 return d[x]; 16 } 17 18 void uni(int x,int y) 19 { 20 if(x>1) f[x]=find1(y); 21 if(y>1) d[y]=find2(x); 22 } 23 24 bool judge() 25 { 26 for(int i=2; i<=n; i++) 27 if(find1(i)!=1||find2(i)!=1) 28 return 1; 29 return 0; 30 } 31 32 int main() 33 { 34 int x,y; 35 while(scanf("%d%d",&n,&m)&&(n+m)) 36 { 37 for(int i=1; i<=n; i++) 38 f[i]=i,d[i]=i; 39 for(int i=0; i<m; i++) 40 { 41 scanf("%d%d",&x,&y); 42 uni(x,y); 43 } 44 if(judge()) puts("No"); 45 else puts("Yes"); 46 } 47 return 0; 48 } View Code

?

轉載于:https://www.cnblogs.com/yours1103/p/3301878.html

總結

以上是生活随笔為你收集整理的hdu 1269的全部內容,希望文章能夠幫你解決所遇到的問題。

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