목록2024/02/01 (4)
득이공간
1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net #include #include #include #include using namespace std; void Play() { int N, K; cin >> N >> K; vector Times; Times.reserve(N); vector EndTimes; Times.reserve(N); vector Neighbors; Neighbors.reserve(N); vector Entries; Entries.reserve(N); for (int i = 0; i ..
2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net #include #include #include #include using namespace std; vector Neighbors; vector Entries; vector Sequence; queue SearchQueue; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; Neighbors.r..
1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net #include #include using namespace std; vector RootNode; vector Schedule; int Find(int Node) { if (Node == RootNode[Node]) { return Node; } return RootNode[Node] = Find(RootNode[Node]); } void Union(int NodeA, int NodeB) { int RootNodeA = Find(NodeA); int RootN..
1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net #include #include using namespace std; vector RootNode; int Find(int Node) { if (Node == RootNode[Node]) { return Node; } return RootNode[Node] = Find(RootNode[Node]); } void Union(int NodeA, int NodeB) { int RootNodeA = Find(NodeA); int R..