Submission #1174758

#TimeUsernameProblemLanguageResultExecution timeMemory
1174758Halym2007Bridges (APIO19_bridges)C++17
13 / 100
54 ms47944 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sz size()
#define ff first
#define ss second
#define pb push_back
#define pii pair <int, int>
#define dur exit(0)
#define dur1 return(0)
const int N = 1e3 + 5;
vector <int> v[N];
int n, m, q, l[N], r[N], vis[N], w[N];
multiset <int> dis[N][N];

void dfs (int x, int val) {
	vis[x] = 1;
	for (int i : v[x]) {
		
		if (vis[i]) continue;
		int jj = *dis[x][i].rbegin();
		if (jj < val) continue;
		dfs (i, val);
	}
}

int main () {
//	freopen ("input.txt", "r", stdin);
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= m; ++i) {
		cin >> l[i] >> r[i] >> w[i];
		dis[l[i]][r[i]].insert (w[i]);
		dis[r[i]][l[i]].insert (w[i]);
		v[l[i]].pb (r[i]);
		v[r[i]].pb (l[i]);
	}
	cin >> q;
	while ( q-- ) {
		int l1, r1, typ;
		cin >> typ >> l1 >> r1;
		if (typ == 1) {
			dis[l[l1]][r[l1]].erase (dis[l[l1]][r[l1]].find (w[l1]));
			dis[r[l1]][l[l1]].erase (dis[r[l1]][l[l1]].find (w[l1]));
			dis[l[l1]][r[l1]].insert (r1);
			dis[r[l1]][l[l1]].insert (r1);
			w[l1] = r1;
		}
		else {
			dfs (l1, r1);
			int cyk = 0;
			for (int i = 1; i <= n; ++i) {
				cyk += vis[i];
				vis[i] = 0;
			}
			cout << cyk << "\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...