题意:每个国家都有许多贸易关系,从第l个国家开始脱离贸易关系,问X国家是否会脱离(当和该国家贸易国家,脱离的数量是贸易关系国家总和的一半时,该国家就会脱离)
DFS问题,运用边的数量去找国家,所以用到“度”!
AC代码(c++)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e6+10;
vector<int>w[maxn];
queue<int>q;
int x,c,p,l;
int du[maxn];
int vis[maxn];
int dis[maxn];
int main()
{ ios::sync_with_stdio(false);
memset(du,0,sizeof du);
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof dis);
cin>>c>>p>>x>>l;
for(int i=1; i<=p; i++)
{
int u,v;
cin>>u>>v;
w[u].push_back(v);
w[v].push_back(u);
du[u]++;
du[v]++;
}
int flag=0;
q.push(l);
dis[l]=1;
while(!q.empty())
{
int y=q.front();
q.pop();
if(y==x)
{
flag=1;
cout<<"leave"<<endl;
break ;
}
for(int i=0; i<w[y].size(); i++) //i表示的是和y相连的边的数量
{
int e=w[y][i]; //e的值就是与y相连的边的值
vis[e]++; //去找这个国家,这个国家的邻国-1
if(vis[e]*2>=du[e]&&dis[e]==0)
{
dis[e]=1;
q.push(e);
}
}
}
if(flag==0)
cout<<"stay"<<endl;
return 0;
}