#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
class QU//并查集的标准模式
{
public:
QU(int n)
{
fa=new int[n+2];
for(int i=1;i<=n;i++)fa[i]=i;
cou=n;
}
~QU()
{
delete[] fa;
}
int find(int i);
void connect(int i,int j);
int count(){
return cou;
}
int cou;
int* fa;
};
int QU::find(int i)
{
while(fa[i]!=i)
{
fa[i]=find(fa[i]);
i=fa[i];
}
return i;
}
void QU::connect(int i,int j)
{
int faOfi=find(i);
int faOfj=find(j);
if(faOfi==faOfj)return;
fa[faOfi]=faOfj;
cou--;
return ;
}
int main()
{
int n,m,k;
cin>>n>>m>>k;
int* is=new int[m];
int* js=new int[m];
for(int i=0;i<m;i++)
{
cin>>is[i]>>js[i];
}
for(int i=0;i<k;i++)
{
int miss;
cin>>miss;
QU qu(n);
for(int j=0;j<m;j++)
{
if(is[j]!=miss && js[j]!=miss)
qu.connect(is[j],js[j]);
}
cout<<qu.count()-2<<endl;
}
delete[] is;
delete[] js;
}
[PAT]Battle Over Cities
最新推荐文章于 2022-03-09 22:05:31 发布