#include "bits/stdc++.h"
using namespace std;
const int N = 1e3 + 5;
vector <int> v[N], vis;
multiset <int> mp[N][N];
int ans;
void dfs(int x, int w) {
vis[x] = true;
ans++;
for(auto i : v[x]) {
if(!vis[i] and *mp[x][i].rbegin() >= w) {
dfs(i, w);
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector <int> u1(m+1), u2(m+1), d(m+1);
for(int i = 1; i <= m; i++) {
cin >> u1[i] >> u2[i] >> d[i];
v[u1[i]].push_back(u2[i]);
v[u2[i]].push_back(u1[i]);
mp[u1[i]][u2[i]].insert(d[i]), mp[u2[i]][u1[i]].insert(d[i]);
}
int q;
cin >> q;
for(int i = 1; i <= q; i++) {
int t;
cin >> t;
if(t == 1) {
int b, r;
cin >> b >> r;
mp[u1[b]][u2[b]].erase(mp[u1[b]][u2[b]].find(d[b]));
mp[u2[b]][u1[b]].erase(mp[u2[b]][u1[b]].find(d[b]));
d[b] = r;
mp[u1[b]][u2[b]].insert(r);
mp[u2[b]][u1[b]].insert(r);
}
else {
int s, w;
cin >> s >> w;
ans = 0;
vis.assign(n+1, 0);
dfs(s, w);
cout << ans << '\n';
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |