Submission #1044687

#TimeUsernameProblemLanguageResultExecution timeMemory
1044687vjudge1다리 (APIO19_bridges)C++17
13 / 100
23 ms12924 KiB
#include "bits/stdc++.h"
using namespace std;

#define int int64_t    
#define pb push_back

using lint=__int128_t;

const int lim=200100;
const int mod=1e9+7;

using pii=pair<int,int>;

pii edges[lim];

vector<pii*>v[lim];

int cnt,weg;
bool vis[lim];

void dfs(int node){
    cnt++;
    vis[node]=1;
    for(pii*p:v[node]){
        auto[f,s]=*p;
        if(!vis[f]&&weg<=s){
            dfs(f);
        }
    }
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#ifdef Local  
    freopen(".in","r",stdin);freopen(".out","w",stdout);
#endif
    int n,m;
    cin>>n>>m;
    if(n<=1000&&m<=1000){
        for(int i=0;i<m;i++){
            int x,y,w;
            cin>>x>>y>>w;
            edges[i<<1]={y,w};
            v[x].pb(edges+(i<<1));
            edges[(i<<1)+1]={x,w};
            v[y].pb(edges+(i<<1)+1);
        }
        int Q;
        cin>>Q;
        for(int i=0;i<Q;i++){
            int t,x,y;
            cin>>t>>x>>y;
            if(t==1){
                x--;
                x<<=1;
                edges[x].second=edges[x|1].second=y;
            }else{
                cnt=0;
                weg=y;
                for(int i=0;i<=n;i++)vis[i]=0;
                dfs(x);
                cout<<cnt<<"\n";
            }
        }
        return 0;
    }
    assert(0);
}
#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...