zoj 2588 Burning Bridges 邊聯通性
最基本的找橋,要注意0的情況,不用輸出空行,zoj現在真慢
/* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <vector> using namespace std; #define Maxm 200005 #define Maxn 10005 int first[Maxm]; int U[Maxm]; int num[Maxm]; int next[Maxm]; int vis[Maxn],low[Maxn],dph[Maxn]; vector<int> ans; int cnt; void add(int v,int u) { cnt++; for(int i=first[v];~i;i=next[i]) if(U[i]==u)//重邊處理 { num[i]++; return; } next[cnt]=first[v]; first[v]=cnt; U[cnt]=u; num[cnt]=1; } int dfs(int v,int f,int d) { vis[v]=1; low[v]=dph[v]=d; for(int i=first[v];~i;i=next[i]) { int &u=U[i]; if(vis[u]) { if(u!=f)low[v]=min(low[v],dph[u]); } else { dfs(u,v,d+1); if(low[u]>dph[v]&&num[i]==1)//num[i]>1為有重邊 ans.push_back(i|1); low[v]=min(low[u],low[v]); } } } int main() { int T; int n,m; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); int i; int a,b; memset(vis,0,sizeof(vis)); memset(first,-1,sizeof(first)); cnt=-1; for(i=0;i<m;i++) { scanf("%d%d",&a,&b); add(a,b);add(b,a); } ans.clear(); dfs(1,-1,0); sort(ans.begin(),ans.end()); printf("%d\n",ans.size()); if(ans.size())printf("%d",(ans[0]+1)/2); for(i=1;i<ans.size();i++) printf(" %d",(ans[i]+1)/2); if(ans.size())puts(""); if(T)puts(""); } }
最後更新:2017-04-03 16:49:02
上一篇:
好電影推薦
下一篇:
知識共享圖文直播---(一)將數據庫中的數據加載到MSFlexGrid控件中再導入Excel
oracle中報ora-01033:oracle initializationg or shutdown in progress錯
CCAI 2017 | 專訪德國語言技術領軍者 Hans Uszkoreit:深度學習還不足以解決 NLP 核心問題
Spring-Bean的屬性(1.單獨定義BEAN,ID為之的BEAN參考之 2.在BEAN中直接定義參考的BEAN)
Cloud Card能否幹掉App
Gartner:中國日益盛行的即時通訊讓傳統應用市場陷入困境
神經網絡常用激活函數對比:sigmoid VS sofmax(附python源碼)
Ruby中實現stream
域名備案與否對網站seo的影響分析
線程池的使用(第八章)
asp.net 自定義錯誤頁