Submission #2543168
Source Code Expand
#include "iostream" #include "algorithm" #include "string" #include "set" #include "vector" #include "queue" #include "iomanip" #include "map" using namespace std; const long long int MOD = 1000000007; long long int N, M, K, H, W; class UnionFind { vector<int>parent; vector<int>rank; vector<int>si; public: UnionFind(int num) { num++; parent.resize(num); rank.resize(num); si.resize(num); for (int i = 0; i < num; i++) { parent[i] = i; rank[i] = 0; si[i] = 1; } } int Find(int node) { if (parent[node] == node)return node; else return parent[node] = Find(parent[node]); } void Unite(int u, int v) { u = Find(u); v = Find(v); if (u == v)return; if (rank[u] < rank[v]) { parent[u] = v; si[v] += si[u]; } else { parent[v] = u; si[u] += si[v]; if (rank[u] == rank[v])rank[u]++; } } bool Check_Same(int u, int v) { return Find(u) == Find(v); } int Get_Size(int node) { return si[Find(node)]; } }; struct Query { bool connect; int l; int r; int st; int year; int index; Query(){ connect = false; } bool operator <(const Query& q)const { return year < q.year; } bool operator >(const Query& q)const { return year > q.year; } }; int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> M; vector<Query>v; for (int i = 0; i < M; i++) { Query q; cin >> q.l >> q.r >> q.year; q.year *= 2; q.connect = true; v.push_back(q); } cin >> K; for (int i = 0; i < K; i++) { Query q; cin >> q.st >> q.year; q.year *= 2; q.year++; q.index = i; v.push_back(q); } vector<int>ans(K); sort(v.begin(), v.end()); reverse(v.begin(), v.end()); UnionFind uf(N); for (auto i : v) { if (i.connect) { uf.Unite(i.l, i.r); } else { ans[i.index] = uf.Get_Size(i.st); } } for (auto i : ans) { cout << i << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 道路の老朽化対策について |
User | olphe |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1962 Byte |
Status | AC |
Exec Time | 249 ms |
Memory | 14700 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 50 / 50 | 50 / 50 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
Subtask1 | sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 256 KB |
subtask1_01.txt | AC | 3 ms | 384 KB |
subtask1_02.txt | AC | 4 ms | 384 KB |
subtask1_03.txt | AC | 4 ms | 384 KB |
subtask1_04.txt | AC | 3 ms | 384 KB |
subtask1_05.txt | AC | 4 ms | 384 KB |
subtask1_06.txt | AC | 4 ms | 384 KB |
subtask1_07.txt | AC | 4 ms | 384 KB |
subtask2_01.txt | AC | 235 ms | 12908 KB |
subtask2_02.txt | AC | 241 ms | 13548 KB |
subtask2_03.txt | AC | 246 ms | 14316 KB |
subtask2_04.txt | AC | 249 ms | 12652 KB |
subtask2_05.txt | AC | 213 ms | 7532 KB |
subtask2_06.txt | AC | 231 ms | 14060 KB |
subtask2_07.txt | AC | 239 ms | 12780 KB |
subtask2_08.txt | AC | 242 ms | 12780 KB |
subtask2_09.txt | AC | 248 ms | 14572 KB |
subtask2_10.txt | AC | 249 ms | 14700 KB |
subtask2_11.txt | AC | 247 ms | 13292 KB |
subtask2_12.txt | AC | 246 ms | 13420 KB |