[Round#405 Div.2] B. Bear and Friendship Condition 본문

Algorithm/CodeForces

[Round#405 Div.2] B. Bear and Friendship Condition

previc 2017. 3. 19. 13:02

http://codeforces.com/contest/791/problem/B


임의의 세점 X,Y,Z에 대해 X-Y && Y-Z 이면 X-Z를 만족하는가를 묻는 문제이다.


한점 X와 연결되어있는 Xi 들은 모두 서로 연결되어있어야 한다는 것을 알 수 있고,


따라서 임의의 점 X를 잡고 그것과 연결된 노드들 X1 ~ Xk 의 개수를 k라 하면 


X에 연결된 노드 개수와 X1~Xk에 연결된 노드 개수들의 합이 k*(k-1)인지를 확인하면 된다.


주의할 점은

for(int i=1;i<=n;i++){

sum=0;

for(auto it:v[i]){

sum+=it;

}

if(v[i].size()*(v[i].size()-1) != sum){

printf("NO");

return 0;

}

}

이런식으로 for문을 짜면 안된다는것.

(반례가 있어보였으나.. 일단 제출해보니 AC를 주길래 맞는가 했더니 처음으로 Hack을 다함 -_-;)


그냥 명확하게 dfs로 위 방법을 구현해내면 되는듯 하다.