CF Add on a Tree (思维题)
题目描述:
输入n表示有n个节点1,2,3.,,,n ,然后输入n-1行每行两个数表示两节点间的边
每次挑选两个叶子i,j.从i->j 且不会重复走过的点,并给走过的边赋值, 问是否所有边都可以随意赋值(不互相制约)
ac代码:
如果一个点的度数只有2 那么相邻两条边必定互相制约
#include<bits/stdc++.h>
using namespace std;
int main(){
int map1[100009];
int n;
cin>>n;
memset(map1,0,sizeof(map1));
int m=n;
n--;
while(n--){
int x,y;
scanf("%d %d",&x,&y);
map1[x]++;
map1[y]++;
}
for(int i=1;i<=m;i++){
if(map1[i]==2) {
printf("NO\n");
return 0;
}
}
printf("YES\n");
}
查看14道真题和解析