題意:將無向圖中的橋找出來,並將他們的輸入序號輸出
思路:模版找橋,但是注意處理重邊和後面的輸出,別的沒什麼了,模版題
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=20010;
struct edge{
int to,id,num;
edge(int a,int b,int c){to=a;id=b;num=c;}
};
vectorG[maxn];
int L[maxn],E[maxn],ans[maxn],vis[maxn];
int n,m,k,kk;
void dfs(int x,int fa){
vis[x]=1;L[x]=k;E[x]=k++;
for(unsigned int i=0;iE[x]&&e.num==0) ans[kk++]=e.id;
}else if(e.to!=fa) L[x]=min(L[x],E[e.to]);
}
}
int tarjan(){
k=0;kk=0;dfs(1,1);
return kk;
}
int main(){
int T,a,b,flag;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
for(int i=0;i0) printf("%d\n",ans[kk-1]);
if(T) printf("\n");
}
return 0;
}