AtCoder Beginner Contest 225 B - Star or Not
問題の要約
N頂点N-1辺の木が与えられる。
頂点は1,2,...,Nの番号がついており,i番目の辺は頂点aiと頂点biを結んでいる。
この木がスターであるか判定しろ。
ただしスターとは,1つの頂点から他の全ての頂点に1本ずつ辺が出ている木のことである。
制約
3<=N<=10^5
1<=ai<bi<=N
与えられるグラフは木である。
入力
N
a1 b1
.
.
.
aN-1 bN-1
考え方
1,頂点の番号を1ずらす。
1,2,...,N => 0,1,...,N-1
2,木はN-1個の辺しかなく,スターならばその全ての辺が1つの頂点に繋がっているはずである。
よって,グラフのデータ構造に辺を全て加えて,頂点の辺の数にN-1があればスターである。
実際のプログラム
#include<iostream>
#include<vector>
using namespace std;
int main(){
long long N;
cin >> N;
T.resize(N);
for(long long i = 0; i < N-1; i++){
long long a,b;
cin >> a >> b;
T[a-1].push_back(b-1);
T[b-1].push_back(a-1);
}
bool star = false;
for(long long i = 0; i < N; i++){
if(T[i].size() == N-1){
star = true;
break;
}
}
if(star){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
return 0;
}