2017年上海金马五校程序设计竞赛(网上资格赛)Problem B : Coach
2017-05-26 20:42
375 查看
一开始就是考虑直接并查集,求所有的点所在的树的深度是否都是可以整除3.
#include <iostream>
#include <map>
using namespace std;
map<int,int> p;
int par[100005],r[100005],num[100005];
void init(){
for(int i=0;i<100005;i++){
par[i]=i;
num[i]=1;
}
}
int findroot(int x){
if(par[x]==x) return x;
else return par[x]=findroot(par[x]);
}
void unite(int x,int y){
x=findroot(x);
y=findroot(y);
if(x==y){
return;
}
par[y]=x;
num[x]+=num[y];
}
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(m == 0) {
printf("No\n");
continue;
}
p.clear();
init();
int k=1;
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
if(p.find(a)==p.end()){
p[a]=k++;
}
if(p.find(b)==p.end()){
p[b]=k++;
}
unite(p[a],p[b]);
}
for(int i = 1;i<=n;i++){
if(num[findroot(p[i])]%3!=0){
printf("No\n");
break;
}
if(i==n&&num[findroot(p[i])]%3==0){
printf("Yes\n");
}
}
}
}
#include <iostream>
#include <map>
using namespace std;
map<int,int> p;
int par[100005],r[100005],num[100005];
void init(){
for(int i=0;i<100005;i++){
par[i]=i;
num[i]=1;
}
}
int findroot(int x){
if(par[x]==x) return x;
else return par[x]=findroot(par[x]);
}
void unite(int x,int y){
x=findroot(x);
y=findroot(y);
if(x==y){
return;
}
par[y]=x;
num[x]+=num[y];
}
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(m == 0) {
printf("No\n");
continue;
}
p.clear();
init();
int k=1;
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
if(p.find(a)==p.end()){
p[a]=k++;
}
if(p.find(b)==p.end()){
p[b]=k++;
}
unite(p[a],p[b]);
}
for(int i = 1;i<=n;i++){
if(num[findroot(p[i])]%3!=0){
printf("No\n");
break;
}
if(i==n&&num[findroot(p[i])]%3==0){
printf("Yes\n");
}
}
}
}
相关文章推荐
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem B : Coach
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem H : DHU Club Festival
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem E : A No-story Kingdom
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem H : DHU Club Festival
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- 2017年上海金马五校程序设计竞赛(网上资格赛) Problem H : DHU Club Festival 贪心
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- 2017年上海金马五校程序设计竞赛(网上资格赛) Problem J : Raising Bacteria
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- 2017年上海金马五校程序设计竞赛(网上资格赛)部分题目题解
- 2017年上海金马五校程序设计竞赛(网上资格赛) A : Corn's new language(括号匹配+求深度)
- 2017年上海金马五校程序设计竞赛:Problem C : Count the Number
- 2017年上海金马五校程序设计竞赛:Problem E : Find Palindrome
- 2017年上海金马五校程序设计竞赛:Problem G : One for You
- 2017年上海金马五校程序设计竞赛:Problem K : Treasure Map
- 2017年上海金马五校程序设计竞赛:Problem I : Frog's Jumping
- 2017年上海金马五校程序设计竞赛:Problem K : Treasure Map
- 2017年上海金马五校程序设计竞赛:Problem A : STEED Cards
- 2017年上海金马五校程序设计竞赛:Problem I : Frog's Jumping
- 2017年上海金马五校程序设计竞赛:Problem C : Count the Number