求助
查看原帖
求助
799600
FaThLi楼主2023/7/20 17:30

调不出来,几组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;
}
2023/7/20 17:30
加载中...