#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;
vector<int> ve[10010];
set<int> se;int t,n,m;bool ok[10010],book[10010];int nut,num,res;voiddfs(int d){if(book[d]==0){
book[d]=1;
nut += ve[d].size();}for(int i =0; i < ve[d].size(); i++){
se.insert(ve[d][i]);if(ok[ve[d][i]]){
ok[ve[d][i]]=0;dfs(ve[d][i]);}}}intmain(){
cin>>t;int y=1;while(t--){int a,b;
cin>>n>>m;
res=num=0;memset(ok,0,sizeof(ok));memset(book,0,sizeof(book));for(int i =1; i <= m; i++){
cin>>a>>b;
ve[a].push_back(b);
ve[b].push_back(a);
ok[a]=ok[b]=1;}for(int i =1; i <= n; i ++){if(ok[i]){
res++;dfs(i);if(nut >(se.size()-1)*2)
num++;
nut=0,se.clear();}}
cout<<"Night sky #"<<y++<<": "<<res<<" constellations, of which "<<num<<" need to be fixed.";
cout<<endl<<endl;for(int i =1; i <= n; i ++)
ve[i].clear();}return0;}
G.Plate Spinning
这个题想难了,没敢做,直接模拟就可以过。
#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;int n,p;intmain(){int t,num =1;
cin>>t;while(t --){
cin>> n >> p ;double c =2.5* n;
cout<<"Circus Act "<< num ++<<':'<<endl;if(n ==1)
cout<<"Chester can do it!"<<endl;else{if(p >= c)
cout<<"Chester can do it!"<<endl;else
cout<<"Chester will fail!"<<endl;}
cout<<endl;}return0;}