Submission #530776

#TimeUsernameProblemLanguageResultExecution timeMemory
530776A_DBridges (APIO19_bridges)C++14
14 / 100
98 ms10928 KiB
#include <bits/stdc++.h>

#define int long long
#define ii pair<int,int>
#define F first
#define S second

using namespace std;
const int N=1e5+100;
int p[N];
int si[N];
int ans[N];
pair<ii,int> a[N];

vector<pair<int,ii>> vec;
int find(int u)
{
    if(u==p[u])return u;
    return p[u]=find(p[u]);
}
void solve()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        p[i]=i;
        si[i]=1;
    }
    while(m--){
        int a,b,c;
        scanf("%lld",&a);
        scanf("%lld",&b);
        scanf("%lld",&c);
        vec.push_back({c,{a,b}});
    }
    sort(vec.begin(),vec.end());
    reverse(vec.begin(),vec.end());
    cin>>m;
    for(int i=1;i<=m;i++){
        int t;
        scanf("%lld",&t);
        a[i].S=i;
        scanf("%lld",&a[i].F.S);
        scanf("%lld",&a[i].F.F);
        a[i].S=i;
    }
    vec.push_back({0,{0,0}});
    sort(a+1,a+m+1);
    reverse(a+1,a+m+1);
    int idx=0;
    for(int i=1;i<=m;i++){
        while(vec[idx].F>=a[i].F.F){
            int aa=find(vec[idx].S.F);
            int bb=find(vec[idx].S.S);
            if(p[aa]!=p[bb]){
                p[bb]=aa;
                si[aa]+=si[bb];
                si[bb]=0;
            }
            idx++;
        }
        ans[a[i].S]=si[find(a[i].F.S)];
    }
    for(int i=1;i<=m;i++)printf("%lld ",ans[i]);
}
main()
{
    int t=1;
//    cin>>t;
    while(t--){
        solve();
    }
}
/*

5 4
1 2 1
2 3 2
3 4 3
4 5 1
4
2 1 5
2 1 3
3 1 4
3 3 3


*/

Compilation message (stderr)

bridges.cpp:66:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   66 | main()
      | ^~~~
bridges.cpp: In function 'void solve()':
bridges.cpp:31:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |         scanf("%lld",&a);
      |         ~~~~~^~~~~~~~~~~
bridges.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         scanf("%lld",&b);
      |         ~~~~~^~~~~~~~~~~
bridges.cpp:33:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |         scanf("%lld",&c);
      |         ~~~~~^~~~~~~~~~~
bridges.cpp:41:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         scanf("%lld",&t);
      |         ~~~~~^~~~~~~~~~~
bridges.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |         scanf("%lld",&a[i].F.S);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
bridges.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |         scanf("%lld",&a[i].F.F);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...