Submission #1531587
Source Code Expand
#include <iostream> #include <vector> #define REP(i,n) for(int i=0; i<n; ++i) int N, M; std::vector<int> parent; void init(int n){ parent.resize(n); REP(i,n){ parent[i] = i; } } int root(int x){ if(parent[x] == x){ return x; }else{ return parent[x] = root(parent[x]); } } bool same(int x, int y){ return root(x) == root(y); } void unite(int x, int y){ x = root(x); y = root(y); if(x != y){ parent[x] = y; } } int main(void){ std::cin >> N >> M; init(N); int a, b; REP(i,M){ std::cin >> a >> b; unite(--a,--b); } int cnt = 0, old = 0; REP(i,N){ if( i == 0 || same(old, i) ) continue; ++cnt; unite(old, i); old = i; } std::cout << cnt << std::endl; }
Submission Info
Submission Time | |
---|---|
Task | B - 道路工事 |
User | b1464296 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 878 Byte |
Status | AC |
Exec Time | 77 ms |
Memory | 1920 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 100 / 100 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample1.txt, sample2.txt |
All | 0.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0.txt | AC | 1 ms | 256 KB |
1.txt | AC | 1 ms | 256 KB |
10.txt | AC | 1 ms | 256 KB |
11.txt | AC | 1 ms | 256 KB |
12.txt | AC | 1 ms | 256 KB |
13.txt | AC | 1 ms | 256 KB |
14.txt | AC | 1 ms | 256 KB |
15.txt | AC | 53 ms | 256 KB |
16.txt | AC | 2 ms | 640 KB |
17.txt | AC | 3 ms | 1920 KB |
18.txt | AC | 2 ms | 1152 KB |
19.txt | AC | 77 ms | 640 KB |
2.txt | AC | 1 ms | 256 KB |
3.txt | AC | 1 ms | 256 KB |
4.txt | AC | 1 ms | 256 KB |
5.txt | AC | 1 ms | 256 KB |
6.txt | AC | 1 ms | 256 KB |
7.txt | AC | 1 ms | 256 KB |
8.txt | AC | 1 ms | 256 KB |
9.txt | AC | 1 ms | 256 KB |
sample1.txt | AC | 1 ms | 256 KB |
sample2.txt | AC | 1 ms | 256 KB |