1013. Battle Over Cities @ PAT (Advanced Level) Practise

来源:互联网 发布:影视类毕业设计 知乎 编辑:程序博客网 时间:2024/06/05 10:52
#include<iostream>using namespace std;struct edge{    int start;    int end;};int father[1000];edge eg[1000000];int num;int findFather(int a){    if(father[a]==a)       return a;   return father[a]=findFather(father[a]);}void merge(int a,int b,int k){   if(a==k||b==k)       return;   int a_r,b_r;   a_r=findFather(a);   b_r=findFather(b);   if(a_r==b_r)      return ;  father[a_r]=b_r;  num--;//num-- after a merge}int main(){   int n,m,i,j,k;   cin>>n>>m>>k;   for(i=0;i<m;i++)        cin>>eg[i].start>>eg[i].end;   while(k--)   {         cin>>j;         num=n-2;//one city is occupied.        for(i=0;i<n;i++)//initialization             father[i]=i;        for(i=0;i<m;i++)            merge(eg[i].start-1,eg[i].end-1,j-1);        cout<<num<<endl;    } return 0;} 


原创粉丝点击