#include<iostream>
#include<stack> //用栈来依次访问分量
#include<vector>
using namespace std;
int n,m;
vector<int>G[100];
int color[100];
void dfs(int r,int c)
{
stack<int >S;
S.push(r);
color[r] = c;
while(!S.empty())
{
int u = S.top();
S.pop();
for(int i=0;i<G[u].size();i++)
{
int v = G[u][i];
if(color[v]== -1)
{
color[v] = c;
S.push(v);
}
}
}
}
int main()
{ int i,s,t,m,q,id=1;
cin >> n>>m;
for(i=0;i<m;i++){
cin >> s >>t;
G[s].push_back(t);
G[t].push_back(s);
}
for(i=0;i<n;i++) color[i] = -1;
for(int u=0;u<n;u++)
{
if(color[u]== -1) dfs(u,id++);
}
cin >> q;
for(i=0;i<q;i++){
cin >> s>>t;
if(color[s]==color[t])
cout <<"Yse"<<endl;
else cout << "No";
}
return 0;
}
挑战程序设计竞赛 12.5连通分量
最新推荐文章于 2024-07-25 13:54:27 发布