题目描述:
输入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"); }