调不出来,几组hack都过了
#include<bits/stdc++.h>
using namespace std;
const int MAX=1000005;
int n,m;
vector<int> G[MAX];
int cp[MAX];
int cnt,rtson;
int dfn[MAX],low[MAX];
int s,t;
int dfs(int u,int fa)
{
dfn[u]=low[u]=++cnt;
for(int i=0; i<G[u].size(); i++)
{
int v=G[u][i];
if(!dfn[v])
{
dfs(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]&&dfn[t]>=dfn[u])
if(fa!=-1) cp[u]=1;
else rtson++;
if(low[v]>dfn[u])
ce.push_back(make_pair(u,v));
}
}
}
int main()
{
cin>>n;
for(;;)
{
int u,v;
cin>>u>>v;
if(u+v==0) break;
G[u].push_back(v);
G[v].push_back(u);
}
cin>>s>>t;
for(int i=1; i<=n; i++)
{
dfs(i,-1);
if(rtson>1) cp[i]=1;
rtson=0;
}
for(int i=1;i<=n;i++) if(cp[i]&&i!=s&&i!=t)
{
cout<<i;
return 0;
}
cout<<"No solution";
return 0;
}