문제
민혁이는 소셜 네트워크 사이트에서 친구를 만드는 것을 좋아하는 친구이다. 우표를 모으는 취미가 있듯이, 민혁이는 소셜 네트워크 사이트에서 친구를 모으는 것이 취미이다.
어떤 사이트의 친구 관계가 생긴 순서대로 주어졌을 때, 두 사람의 친구 네트워크에 몇 명이 있는지 구하는 프로그램을 작성하시오.
친구 네트워크란 친구 관계만으로 이동할 수 있는 사이를 말한다.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진다. 친구 관계는 두 사용자의 아이디로 이루어져 있으며, 알파벳 대문자 또는 소문자로만 이루어진 길이 20 이하의 문자열이다.
출력
친구 관계가 생길 때마다, 두 사람의 친구 네트워크에 몇 명이 있는지 구하는 프로그램을 작성하시오.
기존의 union find에서 추가된건 string을 기반으로 찾아야 한다는 점. 그래서 map을 써야한다. vector사용시 시간초과 발생 map은 map<key type ,value type> m ; 으로 m[key] = value 이다 m.count(key)하면 키에 속한 value값을 알 수 있음.
그리고 또하나 문제점은 시간초과 해결인데 cin, cout 시간 차이를 잡아줘야 하고 endl사용을 하면 안됨. "\n"로 고쳐야 돌아감.
#include <iostream>
#include <map>
#include <string>
'Algorithm' 카테고리의 다른 글
백준 1504번 특정한 최단 경로 (0) | 2019.08.30 |
---|---|
백준 2887번 행성 터널 (0) | 2019.08.29 |
백준 13549번 숨바꼭질3 (0) | 2019.08.27 |
백준 2178번 미로 탐색 (0) | 2019.08.26 |
백준 12761번 돌다리 (0) | 2019.08.25 |