Submission #996266


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define int long long

struct UnionFind {
  vector<int> data;
  UnionFind(int size) : data(size, -1) { }
  bool unionSet(int x, int y) {
    x = root(x); y = root(y);
    if (x != y) {
      if (data[y] < data[x]) swap(x, y);
      data[x] += data[y]; data[y] = x;
    }
    return x != y;
  }
  bool findSet(int x, int y) {
    return root(x) == root(y);
  }
  int root(int x) {
    return data[x] < 0 ? x : data[x] = root(data[x]);
  }
  int size(int x) {
    return -data[root(x)];
  }
};


void solve(long long N, long long M, vector<long long> a, vector<long long> b, vector<long long> c, long long Q, vector<long long> S, vector<long long> T){
	vector< array<int,3> > es;
	for(int i = 0 ; i < M ; i++)
		es.push_back({c[i],a[i]-1,b[i]-1});
	sort(es.begin(),es.end());
	for(int i = 0 ; i < Q ; i++){
		UnionFind uf(N);
		S[i]--,T[i]--;
		uf.unionSet(S[i],T[i]);
		int ans = 0;
		for(auto e : es)
			if( uf.unionSet(e[1],e[2]) ){
				ans += e[0];
			}
		cout << ans << endl;
	}		
}



signed main(){	
	ios::sync_with_stdio(false);
	long long Q;
	long long N;
	long long M;
	cin >> N;
	cin >> M;
	vector<long long> c(M-1+1);
	vector<long long> b(M-1+1);
	vector<long long> a(M-1+1);
	for(int i = 0 ; i <= M-1 ; i++){
		cin >> a[i];
		cin >> b[i];
		cin >> c[i];
	}
	cin >> Q;
	vector<long long> T(Q-1+1);
	vector<long long> S(Q-1+1);
	for(int i = 0 ; i <= Q-1 ; i++){
		cin >> S[i];
		cin >> T[i];
	}
	solve(N, M, a, b, c, Q, S, T);
	return 0;
}

Submission Info

Submission Time
Task A - Graph
User kyuridenamida
Language C++14 (GCC 5.4.1)
Score 200
Code Size 1495 Byte
Status TLE
Exec Time 3156 ms
Memory 34540 KB

Judge Result

Set Name Sample subtask1 subtask2 All
Score / Max Score 0 / 0 200 / 200 0 / 300 0 / 200
Status
AC × 2
AC × 12
AC × 16
TLE × 5
AC × 16
TLE × 13
Set Name Test Cases
Sample sample_1.txt, sample_2.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt
All sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt
Case Name Status Exec Time Memory
sample_1.txt AC 3 ms 256 KB
sample_2.txt AC 3 ms 256 KB
subtask_1_1.txt AC 3 ms 384 KB
subtask_1_10.txt AC 107 ms 15984 KB
subtask_1_11.txt AC 3 ms 256 KB
subtask_1_2.txt AC 23 ms 3832 KB
subtask_1_3.txt AC 214 ms 31468 KB
subtask_1_4.txt AC 4 ms 640 KB
subtask_1_5.txt AC 5 ms 768 KB
subtask_1_6.txt AC 54 ms 8180 KB
subtask_1_7.txt AC 213 ms 31468 KB
subtask_1_8.txt AC 5 ms 640 KB
subtask_1_9.txt AC 8 ms 1216 KB
subtask_2_1.txt TLE 3155 ms 31596 KB
subtask_2_2.txt TLE 3155 ms 31596 KB
subtask_2_3.txt TLE 3155 ms 31596 KB
subtask_2_4.txt TLE 3155 ms 31596 KB
subtask_2_5.txt AC 115 ms 768 KB
subtask_2_6.txt AC 402 ms 2172 KB
subtask_2_7.txt AC 1110 ms 8308 KB
subtask_2_8.txt TLE 3155 ms 31596 KB
subtask_3_1.txt TLE 3156 ms 34540 KB
subtask_3_2.txt TLE 3156 ms 34540 KB
subtask_3_3.txt TLE 3154 ms 5120 KB
subtask_3_4.txt TLE 3154 ms 4728 KB
subtask_3_5.txt TLE 3155 ms 19056 KB
subtask_3_6.txt TLE 3155 ms 29932 KB
subtask_3_7.txt TLE 3156 ms 34540 KB
subtask_3_8.txt TLE 3156 ms 34540 KB