Submission #1174357

#TimeUsernameProblemLanguageResultExecution timeMemory
1174357GurbanBridges (APIO19_bridges)C++20
13 / 100
3095 ms7752 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int maxn=5e4+5;
const int maxm = 1e5+5;
int n,m,q;
int pos[maxm][2];
int ed[maxm][2];
vector<pair<int,int>>E[maxn];

bool vis[maxn];
int ans;
void dfs(int nd,int wgt){
	vis[nd] = 1;
	ans++;
	for(auto i : E[nd]){
		int to = i.first;
		int d = i.second;
		if(vis[to]) continue;
		if(wgt <= d) dfs(to,wgt);
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);


	cin >> n >> m;
	for(int i = 1;i <= m;i++){
		int x,y,d;
		cin >> x >> y >> d;
		ed[i][0] = x;
		ed[i][1] = y;
		pos[i][0] = (int)E[x].size();
		pos[i][1] = (int)E[y].size();
		E[x].push_back({y,d});
		E[y].push_back({x,d});
	}

	cin >> q;
	while(q--){
		int tp; cin >> tp;
		if(tp == 1){
			int b,r; cin >> b >> r;
			E[ed[b][0]][pos[b][0]].second = r;
			E[ed[b][1]][pos[b][1]].second = r;
		}
		else {
			int s,w; cin >> s >> w;
			ans = 0;
			memset(vis,0,sizeof(vis));
			dfs(s,w);
			cout<<ans<<'\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...