Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <cmath>
- #include <cstdio>
- #include <algorithm>
- #include <set>
- using namespace std;
- vector< vector<int> > nat;//relation
- int lastnatindex = 0;
- vector<int> p;//people nat index;
- vector<int> s;//number of places
- int main()
- {
- //freopen("wedding.in","r",stdin);
- //freopen("wedding.out","w",stdout);
- freopen("iput.txt","r",stdin);
- freopen("outp.txt","w",stdout);
- int n,m,k;
- cin>>n>>m>>k;
- p.resize(n+1);
- for(int i = 1; i<=n;i++)
- p[i] = -1;
- int t1,t2;
- for(int i = 0;i<m;i++)
- {
- cin>>t1>>t2;
- if(p[t1]!=-1)
- {
- nat[p[t1]].push_back(t2);
- p[t2]=p[t1];
- }
- else if(p[t2]!=-1)
- {
- nat[p[t2]].push_back(t1);
- p[t1]=p[t2];
- }
- else
- {
- nat.resize(lastnatindex+1);
- p[t2]=nat.size()-1;
- p[t1]=p[t2];
- nat[lastnatindex].push_back(t1);
- nat[lastnatindex].push_back(t2);
- lastnatindex++;
- }
- }
- s.resize(k);
- for(int i =0;i<k;i++)
- cin>>s[i];
- int count = 0 ;
- vector<int> ss(n+1);
- for(int i =0;i<nat.size();i++)
- ss[nat[i].size()]=1;
- for(int i =0;i<s.size();i++)
- {
- for(int j =0;j<nat.size();j++)
- {
- if(nat[j].size() == s[i] && ss[nat[j].size()]==1 )
- {
- ss[nat[j].size()]=0;
- count++;
- break;
- }
- }
- }
- bool t = false;
- for(int i =0;i<ss.size();i++)
- if(ss[i]!=0){t = true;break;}
- if(t == false)
- {
- for(int i =1;i<p.size();i++)
- if(p[i]==-1){t = true;break;}
- }
- if(t)count++;
- cout<<count;
- return 0;
- }
Add Comment
Please, Sign In to add comment