Submission #2120788
Source Code Expand
#include <bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; #define MOD 1000000007 const int MAX_N=100000; int N,M,Q; int par[MAX_N]; // 親 int rnk[MAX_N]; // rank, 木の深さ int num[MAX_N]; // N要素で初期化 void init(){ for(int i=0;i<N;i++){ par[i]=i; rnk[i]=0; num[i]=1; } } // 木の根を求める int find(int x){ if (par[x] == x){ return x; }else{ return par[x] = find(par[x]); } } // xとyの属する集合を併合 void unite(int x, int y){ x = find(x); y = find(y); if (x == y) return; if (rnk[x] < rnk[y]){ par[x] = y; num[y]+=num[x]; }else{ par[y] = x; num[x]+=num[y]; if (rnk[x] == rnk[y]) rnk[x]++; } } // xとyが同じ集合に属するかどうか bool same(int x, int y){ return find(x) == find(y); } int main(){ cin>>N>>M; init(); vector<pair<int,pair<int,int>>> v(M); for(int i=0;i<M;i++){ int a,b,y; cin>>a>>b>>y; a--, b--; v[i]={y,{a,b}}; } sort(v.rbegin(),v.rend()); cin>>Q; vector<pair<int,pair<int,int>>> p(Q); for(int i=0;i<Q;i++){ int a,b; cin>>a>>b; a--; p[i]={b,{i,a}}; } sort(p.rbegin(),p.rend()); int ind=0; int ans[Q]={}; for(int i=0;i<Q;i++){ int w=p[i].first; int from=p[i].second.second; for(int j=ind;j<M;j++){ int y=v[j].first; int a=v[j].second.first; int b=v[j].second.second; if(y>w){ if(!same(a,b)) unite(a,b); }else break; ind++; } int root=find(from); ans[p[i].second.first]=num[root]; } for(int i=0;i<Q;i++) cout<<ans[i]<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 道路の老朽化対策について |
User | misosoup |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1744 Byte |
Status | AC |
Exec Time | 415 ms |
Memory | 5888 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 | 5 ms | 256 KB |
subtask1_02.txt | AC | 5 ms | 256 KB |
subtask1_03.txt | AC | 5 ms | 256 KB |
subtask1_04.txt | AC | 4 ms | 256 KB |
subtask1_05.txt | AC | 5 ms | 256 KB |
subtask1_06.txt | AC | 5 ms | 256 KB |
subtask1_07.txt | AC | 5 ms | 256 KB |
subtask2_01.txt | AC | 394 ms | 5760 KB |
subtask2_02.txt | AC | 407 ms | 5760 KB |
subtask2_03.txt | AC | 404 ms | 5760 KB |
subtask2_04.txt | AC | 415 ms | 5760 KB |
subtask2_05.txt | AC | 285 ms | 4096 KB |
subtask2_06.txt | AC | 365 ms | 5888 KB |
subtask2_07.txt | AC | 381 ms | 5888 KB |
subtask2_08.txt | AC | 395 ms | 5888 KB |
subtask2_09.txt | AC | 412 ms | 5760 KB |
subtask2_10.txt | AC | 407 ms | 5760 KB |
subtask2_11.txt | AC | 411 ms | 5632 KB |
subtask2_12.txt | AC | 411 ms | 5504 KB |