Submission #5013457
Source Code Expand
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#define rep(i,l,r) for(int i=(l);i<=(r);++i)
#define per(i,r,l) for(int i=(r);i>=(l);--i)
using namespace std;
const int maxn=2e5+10;
int n,m,f[maxn],t[maxn],sz[maxn],cnt,u,v,x,fa[maxn][19],w[maxn],Q,p,d[maxn];
int gfa(int x){return (f[x]^x)?(f[x]=gfa(f[x])):x;}
int get(int u,int x){
per(i,18,0) if(w[fa[u][i]]<=x) u=fa[u][i];
return u;
}
int find(int u,int v,int x){u=get(u,x),v=get(v,x);return (u^v)?(sz[u]+sz[v]):sz[u];}
int main(){
scanf("%d%d",&n,&m);
rep(i,1,n) f[i]=i,t[i]=i,sz[i]=1;cnt=n;
rep(i,1,m){
scanf("%d%d",&u,&v);
if(gfa(u)==gfa(v)) continue;
u=gfa(u),v=gfa(v);f[u]=v;
fa[t[u]][0]=fa[t[v]][0]=++cnt;w[cnt]=i;
sz[cnt]=sz[t[u]]+sz[t[v]];
t[v]=cnt;
}
rep(i,1,18) rep(j,1,cnt) if(fa[j][i-1]) fa[j][i]=fa[fa[j][i-1]][i-1];
scanf("%d",&Q);sz[0]=n+1;w[0]=m+1;
while(Q--){
scanf("%d%d%d",&u,&v,&x);
int l=1,r=m,ans=m;
while(l<=r){
int mid=(l+r)>>1;
if(find(u,v,mid)>=x) ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
}
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Stamp Rally |
User |
ffffxk |
Language |
C++14 (GCC 5.4.1) |
Score |
1000 |
Code Size |
1309 Byte |
Status |
AC |
Exec Time |
503 ms |
Memory |
18816 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:24:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&n,&m);
^
./Main.cpp:27:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&u,&v);
^
./Main.cpp:35:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&Q);sz[0]=n+1;w[0]=m+1;
^
./Main.cpp:37:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d",&u,&v,&x);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1000 / 1000 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_00.txt |
All |
0_00.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt |
Case Name |
Status |
Exec Time |
Memory |
0_00.txt |
AC |
2 ms |
2304 KB |
1_00.txt |
AC |
430 ms |
18048 KB |
1_01.txt |
AC |
503 ms |
18048 KB |
1_02.txt |
AC |
464 ms |
18816 KB |
1_03.txt |
AC |
495 ms |
18816 KB |
1_04.txt |
AC |
463 ms |
18560 KB |
1_05.txt |
AC |
491 ms |
18560 KB |
1_06.txt |
AC |
471 ms |
18432 KB |
1_07.txt |
AC |
489 ms |
18432 KB |
1_08.txt |
AC |
484 ms |
18048 KB |
1_09.txt |
AC |
455 ms |
18176 KB |
1_10.txt |
AC |
442 ms |
18048 KB |
1_11.txt |
AC |
419 ms |
18048 KB |
1_12.txt |
AC |
402 ms |
18048 KB |
1_13.txt |
AC |
396 ms |
18048 KB |
1_14.txt |
AC |
392 ms |
18048 KB |
1_15.txt |
AC |
392 ms |
18048 KB |
1_16.txt |
AC |
412 ms |
18048 KB |
1_17.txt |
AC |
445 ms |
18048 KB |
1_18.txt |
AC |
443 ms |
18048 KB |
1_19.txt |
AC |
431 ms |
18048 KB |
1_20.txt |
AC |
438 ms |
18048 KB |
1_21.txt |
AC |
426 ms |
18048 KB |
1_22.txt |
AC |
441 ms |
18048 KB |
1_23.txt |
AC |
446 ms |
18048 KB |
1_24.txt |
AC |
456 ms |
18048 KB |
1_25.txt |
AC |
438 ms |
18048 KB |
1_26.txt |
AC |
430 ms |
18048 KB |
1_27.txt |
AC |
439 ms |
18048 KB |
1_28.txt |
AC |
430 ms |
18048 KB |
1_29.txt |
AC |
455 ms |
18048 KB |
1_30.txt |
AC |
481 ms |
18048 KB |
1_31.txt |
AC |
455 ms |
18048 KB |