Submission #527012

#TimeUsernameProblemLanguageResultExecution timeMemory
527012LucaDantasBridges (APIO19_bridges)C++17
13 / 100
38 ms580 KiB
#include <bits/stdc++.h>
using namespace std;

constexpr int maxn = 1e3+10; // primeira subtask fds DEBUG <-------------------------------------->

struct DSU {
	int pai[maxn], peso[maxn];
	DSU() { for(int i = 0; i < maxn; i++) pai[i] = i, peso[i] = 1; }
	void init() { for(int i = 0; i < maxn; i++) pai[i] = i, peso[i] = 1; }
	int find(int x) { return pai[x] == x ? x : pai[x] = find(pai[x]); }
	void join(int a, int b) {
		a = find(a), b = find(b);
		if(a == b) return;
		if(peso[a] < peso[b]) swap(a, b);
		pai[b] = a;
		peso[a] += peso[b];
	}
	int sz(int a) { return peso[find(a)]; }
} dsu;

struct Edge { int a, b, d; } e[maxn];

int main() {
	int n, m; scanf("%d %d", &n, &m);
	for(int i = 0; i < m; i++)
		scanf("%d %d %d", &e[i].a, &e[i].b, &e[i].d);

	int q; scanf("%d", &q);
	for(int i = 0; i < q; i++) {
		int tipo, x, y; scanf("%d %d %d", &tipo, &x, &y);
		if(tipo == 1) e[x-1].d = y;
		else {
			dsu.init();
			for(int i = 0; i < m; i++)
				if(e[i].d >= y) dsu.join(e[i].a, e[i].b);
			printf("%d\n", dsu.sz(x));
		}
	}
}

Compilation message (stderr)

bridges.cpp: In function 'int main()':
bridges.cpp:24:17: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |  int n, m; scanf("%d %d", &n, &m);
      |            ~~~~~^~~~~~~~~~~~~~~~~
bridges.cpp:26:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   scanf("%d %d %d", &e[i].a, &e[i].b, &e[i].d);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bridges.cpp:28:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |  int q; scanf("%d", &q);
      |         ~~~~~^~~~~~~~~~
bridges.cpp:30:24: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |   int tipo, x, y; scanf("%d %d %d", &tipo, &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...