제출 #1343924

#제출 시각아이디문제언어결과실행 시간메모리
1343924Zero다리 (APIO19_bridges)C++20
13 / 100
3096 ms7380 KiB
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ff first
#define ss second
#define pi pair<int,int> 

struct tr{
    int u, v, w;
};
const int N = 50001;
vector<tr> b;
vector<pi> a[N];

int n,m;
int c;

bool vis[N];

void dfs(int x, int w) {
    vis[x] = true;
    c++;
    for (auto i : a[x]) {
        if (!vis[i.ff] && i.ss >= w)
            dfs(i.ff, w);
    }
}


signed main(){
    cin.tie(0)->sync_with_stdio(0);
    
    cin >> n >> m;


    for(int i=0; i < m ; i ++){
        int q,w,e ; cin >> q >> w >> e;
        b.pb({q,w,e});
        a[q].pb({w,e});
        a[w].pb({q,e});
    }

    int t; cin >> t;
    while(t--){
        int p,l,r; cin >> p >> l >> r;
        if(p == 1){
            
            for(auto &j : a[b[l-1].u])
                if(j.ff == b[l-1].v && j.ss == b[l-1].w){ j.ss = r; break;}
            for(auto &j : a[b[l-1].v])
                if(j.ff == b[l-1].u && j.ss == b[l-1].w){ j.ss = r; break;}
            b[l-1].w = r;
            // for(int i=1; i <= n; i ++){
            //     cout << i << ":  ";
            //     for(auto j : a[i]) cout << j.ff << "," << j.ss << "  ";
            //     cout << '\n';
            // }
            
            // cout << '\n';
        }
        else {
            c = 0;
            memset(vis, false, sizeof(bool) * (n + 1));
            dfs(l, r);
            cout << c << '\n';
        }
    }





}
#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...