其实这道题是割点与桥
不要走啊,大佬,可怜可怜小蒟蒻吧
帮我康康demo吧
一天了都没搞出来QwQ
#include <bits/stdc++.h>
using namespace std;
int dfn[106],low[106],tot,n,u,v,s,t;
bool pos[106];
vector<int> e[106];
void dfs(int u,int fa){
int chil = 0;
dfn[u] = low[u] = ++tot;
for(int &v:e[u]){
if(v == fa) continue;
if(!dfn[v]){
dfs(v,u);
low[u] = min(low[u],low[v]);
if(dfn[u] <= low[v])
chil++;
}else low[u] = min(low[u],dfn[v]);
}
if(chil > 1||(fa&&chil))
pos[u] = 1;
}
void tarjan(){
dfs(s,0);
for(int i = 1;i <= n; i++){
if(i == s||i == t) continue;
if(pos[i]&&dfn[i] < dfn[t]){
cout << i;
exit(0);
}
}
}
void solve(){
cin >> n;
while(1){
cin >> u >> v;
if(u == 0&&v == 0) break;
e[u].push_back(v);
e[v].push_back(u);
}
cin >> s >> t;
tarjan();
cout << "No solution";
}
main(){
solve();
return 0;
}
酒名九命