B题
Dis2
https://ac.nowcoder.com/acm/contest/5633/B
在比赛的时候,我一直在想Dijskra算法, 就一直在里面转圈圈.................o(╥﹏╥)o
比赛过后,冷静的想了一下,这题是一道签到题。
首先用vector记下,这些点,再用for遍历这些点,这些点连接的下一个点的元素有哪些。超过2的,记录下来。
代码:
#include<bits/stdc++.h> using namespace std; const int N= 1e6+10; vector<int > e[N]; int res[N]; inline int read( ) { int x=0,f=1; char c=getchar (); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar (); } while(c>='0'&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x*f; } int main() { int n; n=read(); for(int i=1;i<n;i++) { int a,b; a=read(),b=read(); e[a].push_back(b); e[b].push_back(a); } for(int i=1;i<=n;i++) { int cnt=0; for(int j=0;j<e[i].size();j++) { cnt+=e[e[i][j]].size()-1; } printf("%d\n",cnt); } return 0; }