Submission #2889501


Source Code Expand

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int root[4000];
int getRoot(int v){ return root[v] == -1 ? v : root[v] = getRoot(root[v]); }

vector<vector<long long>> solve(int N, const vector<pair<int, pair<int,int>>>& edge){
	fill(root, root+N, -1);
	vector<vector<pair<int,int>>> g(N);
	long long sum = 0;
	for(auto& e : edge){
		int src = e.second.first;
		int dst = e.second.second;
		int p = getRoot(src);
		int q = getRoot(dst);
		if(p != q){
			sum += e.first;
			root[q] = p;
			g[src].emplace_back(dst, e.first);
			g[dst].emplace_back(src, e.first);
		}
	}
	vector<vector<long long>> res(N, vector<long long>(N, -1));
	for(int i=0;i<N;i++){
		res[i][i] = 0;
		queue<int> qu; qu.push(i);
		while(!qu.empty()){
			int pos = qu.front(); qu.pop();
			for(auto& e : g[pos]){
				int dst = e.first;
				if(res[i][dst] >= 0) continue;
				res[i][dst] = max<long long>(res[i][pos], e.second);
				qu.push(dst);
			}
		}
	}
	for(auto& v : res){
		for(auto& t : v) t = sum - t;
	}
	return res;
}

int main(){
	int N, M;
	while(cin >> N >> M){
		vector<pair<int, pair<int, int>>> edge(M);
		for(auto& p : edge){
			cin >> p.second.first >> p.second.second >> p.first;
			--p.second.first;
			--p.second.second;
		}
		sort(edge.begin(), edge.end());
		auto res = solve(N, edge);
		int Q; cin >> Q;
		for(int i=0;i<Q;i++){
			int s, t; cin >> s >> t;
			cout << res[s-1][t-1] << endl;
		}
	}
}

Submission Info

Submission Time
Task A - Graph
User pes
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1508 Byte
Status AC
Exec Time 1076 ms
Memory 131584 KB

Judge Result

Set Name Sample subtask1 subtask2 All
Score / Max Score 0 / 0 200 / 200 300 / 300 200 / 200
Status
AC × 2
AC × 12
AC × 21
AC × 31
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, 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 1 ms 256 KB
sample_2.txt AC 1 ms 256 KB
subtask_1_1.txt AC 2 ms 384 KB
subtask_1_10.txt AC 648 ms 128000 KB
subtask_1_11.txt AC 1 ms 256 KB
subtask_1_2.txt AC 495 ms 126208 KB
subtask_1_3.txt AC 840 ms 130432 KB
subtask_1_4.txt AC 461 ms 125696 KB
subtask_1_5.txt AC 469 ms 125696 KB
subtask_1_6.txt AC 552 ms 126848 KB
subtask_1_7.txt AC 833 ms 130432 KB
subtask_1_8.txt AC 441 ms 125696 KB
subtask_1_9.txt AC 472 ms 125824 KB
subtask_2_1.txt AC 847 ms 130432 KB
subtask_2_2.txt AC 842 ms 130432 KB
subtask_2_3.txt AC 844 ms 130432 KB
subtask_2_4.txt AC 842 ms 130432 KB
subtask_2_5.txt AC 448 ms 125824 KB
subtask_2_6.txt AC 481 ms 125952 KB
subtask_2_7.txt AC 559 ms 126848 KB
subtask_2_8.txt AC 842 ms 130432 KB
subtask_3_1.txt AC 1051 ms 131584 KB
subtask_3_2.txt AC 1058 ms 131584 KB
subtask_3_3.txt AC 660 ms 127104 KB
subtask_3_4.txt AC 697 ms 127104 KB
subtask_3_5.txt AC 862 ms 129152 KB
subtask_3_6.txt AC 963 ms 130432 KB
subtask_3_7.txt AC 1069 ms 131584 KB
subtask_3_8.txt AC 1076 ms 131584 KB