Submission #2543168


Source Code Expand

#include "iostream"
#include "algorithm"
#include "string"
#include "set"
#include "vector"
#include "queue"
#include "iomanip"
#include "map"

using namespace std;

const long long int MOD = 1000000007;

long long int N, M, K, H, W;

class UnionFind {
	vector<int>parent;
	vector<int>rank;
	vector<int>si;
public:
	UnionFind(int num) {
		num++;
		parent.resize(num);
		rank.resize(num);
		si.resize(num);
		for (int i = 0; i < num; i++) {
			parent[i] = i;
			rank[i] = 0;
			si[i] = 1;
		}
	}
	int Find(int node) {
		if (parent[node] == node)return node;
		else return parent[node] = Find(parent[node]);
	}
	void Unite(int u, int v) {
		u = Find(u);
		v = Find(v);
		if (u == v)return;
		if (rank[u] < rank[v]) {
			parent[u] = v;
			si[v] += si[u];
		}
		else {
			parent[v] = u;
			si[u] += si[v];
			if (rank[u] == rank[v])rank[u]++;
		}
	}
	bool Check_Same(int u, int v) {
		return Find(u) == Find(v);
	}
	int Get_Size(int node) {
		return si[Find(node)];
	}
};

struct Query {
	bool connect;
	int l;
	int r;
	int st;
	int year;
	int index;
	Query(){
		connect = false;
	}
	bool operator <(const Query& q)const {
		return year < q.year;
	}
	bool operator >(const Query& q)const {
		return year > q.year;
	}
};

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	cin >> N >> M;
	vector<Query>v;
	for (int i = 0; i < M; i++) {
		Query q;
		cin >> q.l >> q.r >> q.year;
		q.year *= 2;
		q.connect = true;
		v.push_back(q);
	}
	cin >> K;
	for (int i = 0; i < K; i++) {
		Query q;
		cin >> q.st >> q.year;
		q.year *= 2;
		q.year++;
		q.index = i;
		v.push_back(q);
	}
	vector<int>ans(K);
	sort(v.begin(), v.end());
	reverse(v.begin(), v.end());
	UnionFind uf(N);
	for (auto i : v) {
		if (i.connect) {
			uf.Unite(i.l, i.r);
		}
		else {
			ans[i.index] = uf.Get_Size(i.st);
		}
	}
	for (auto i : ans) {
		cout << i << endl;
	}
	return 0;
}

Submission Info

Submission Time
Task D - 道路の老朽化対策について
User olphe
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1962 Byte
Status AC
Exec Time 249 ms
Memory 14700 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 50 / 50 50 / 50
Status
AC × 3
AC × 10
AC × 22
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 3 ms 384 KB
subtask1_02.txt AC 4 ms 384 KB
subtask1_03.txt AC 4 ms 384 KB
subtask1_04.txt AC 3 ms 384 KB
subtask1_05.txt AC 4 ms 384 KB
subtask1_06.txt AC 4 ms 384 KB
subtask1_07.txt AC 4 ms 384 KB
subtask2_01.txt AC 235 ms 12908 KB
subtask2_02.txt AC 241 ms 13548 KB
subtask2_03.txt AC 246 ms 14316 KB
subtask2_04.txt AC 249 ms 12652 KB
subtask2_05.txt AC 213 ms 7532 KB
subtask2_06.txt AC 231 ms 14060 KB
subtask2_07.txt AC 239 ms 12780 KB
subtask2_08.txt AC 242 ms 12780 KB
subtask2_09.txt AC 248 ms 14572 KB
subtask2_10.txt AC 249 ms 14700 KB
subtask2_11.txt AC 247 ms 13292 KB
subtask2_12.txt AC 246 ms 13420 KB