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
AC × 1
AC × 33
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