在比赛的时候,我一直在想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;
}


京公网安备 11010502036488号