Submission #1031748

#TimeUsernameProblemLanguageResultExecution timeMemory
1031748KasymKBridges (APIO19_bridges)C++17
0 / 100
3032 ms23800 KiB
#include "bits/stdc++.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int MOD = 1e9+7;
const int N = 1e5+5;

multiset<pii> adj[N];
vector<vector<int>> e;
int vis[N];

void dfs(int x, int w){
	vis[x] = 1;
	for(auto it = adj[x].begin(); it != adj[x].end(); ++it)
		if(it->ss >= w and !vis[it->ff])
  			dfs(it->ff, w);
}

int main(){
	int n, m;
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= m; ++i){
		int u, v, w;
		scanf("%d%d%d", &u, &v, &w);
		adj[u].insert({v, w});
		adj[v].insert({u, w});
		e.push_back({u, v, w});
	}

	int q;
	scanf("%d", &q);
	vector<int> v;
	while(q--){
		int op, x, y;
		scanf("%d%d%d", &op, &x, &y);
		if(op == 1){
			x--;
			int u = e[x][0], v = e[x][1], w = e[x][2];
			adj[u].erase(adj[u].find({v, w}));
			adj[v].erase(adj[v].find({u, w}));
			w = e[x][2] = y;
			adj[u].insert({v, w});
			adj[v].insert({u, w});
			continue;
		}
		dfs(x, y);
		int ans = 0;
		for(int i = 1; i <= n; ++i)
			ans += vis[i], vis[i] = 0;
		printf("%d\n", ans);
		v.pb(ans);
	}
	for(int i : v)
		printf("%d\n", i);
	return 0;
}

Compilation message (stderr)

bridges.cpp: In function 'int main()':
bridges.cpp:27:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |  scanf("%d%d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~
bridges.cpp:30:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |   scanf("%d%d%d", &u, &v, &w);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
bridges.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |  scanf("%d", &q);
      |  ~~~~~^~~~~~~~~~
bridges.cpp:41:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |   scanf("%d%d%d", &op, &x, &y);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...