답안 #975312

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
975312 2024-05-04T18:23:58 Z raspy 슈퍼트리 잇기 (IOI20_supertrees) C++14
11 / 100
179 ms 24656 KB
#include "supertrees.h"
#include <vector>
#include <iostream>

using namespace std;

bool obd[20005];
int dis[20005];
vector<int> el[20005];

int par(int x)
{
	return dis[x] = (dis[x] == x ? x : par(dis[x]));
}

void zd(int x, int y, bool zlij = true)
{
	x = par(x);
	y = par(y);
	if (x == y)
		return;
	if (el[x].size() < el[y].size())
		swap(x, y);
	if (zlij)
		for (auto e : el[y])
			el[x].push_back(e);
	dis[y] = x;
	return;
}

int construct(vector<vector<int>> p)
{
	int n = p.size();
	vector<vector<int>> gr(n, vector<int>(n, 0));
	for (int i = 0; i <= n; i++)
	{
		el[i].push_back(i);
		dis[i] = i; 
	}
	for (int i = 0; i < n; i++)
		for (int j = i+1; j < n; j++)
		{
			if (p[i][j] == 1 && par(i)-par(j))
			{
				gr[par(i)][par(j)] = gr[par(j)][par(i)] = 1;
				zd(i, j, 0);
			}
		}
	int dalje = 0;
	for (int i = 0; i < n; i++)
		for (int j = i+1; j < n; j++)
		{
			if (p[i][j] == 2 && par(i)-par(j))
			{
				dalje = 1;
				zd(i, j);
			}
		}
	if (dalje)
	{
		for (int i = 0; i < n; i++)
		{
			int x = par(i);
			if (obd[x])
				continue;
			obd[x] = 1;			
			vector<int> tr = el[x];
			if (tr.size() <= 2)
				return 0;
			tr.push_back(x);
			int pr = -1;
			for (auto v : tr)
			{
				if (pr+1)
					gr[v][pr] = gr[pr][v] = 1;
				pr = v;
			}
		}
	}
	// for (int i = 0; i < n; i++)
	// 	for (int j = i+1; j < n; j++)
	// 		if (p[i][j] == 0 && par(i) == par(j))
	// 			return 0;
	build(gr);
	return 1;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 860 KB Output is correct
2 Correct 1 ms 860 KB Output is correct
3 Correct 1 ms 860 KB Output is correct
4 Correct 1 ms 860 KB Output is correct
5 Correct 1 ms 864 KB Output is correct
6 Correct 7 ms 1884 KB Output is correct
7 Correct 161 ms 24404 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 860 KB Output is correct
2 Correct 1 ms 860 KB Output is correct
3 Correct 1 ms 860 KB Output is correct
4 Correct 1 ms 860 KB Output is correct
5 Correct 1 ms 864 KB Output is correct
6 Correct 7 ms 1884 KB Output is correct
7 Correct 161 ms 24404 KB Output is correct
8 Correct 1 ms 860 KB Output is correct
9 Correct 1 ms 860 KB Output is correct
10 Correct 1 ms 860 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 7 ms 1884 KB Output is correct
13 Correct 166 ms 24440 KB Output is correct
14 Incorrect 1 ms 860 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 856 KB Output is correct
2 Correct 1 ms 860 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 0 ms 860 KB Output is correct
5 Correct 1 ms 908 KB Output is correct
6 Correct 1 ms 856 KB Output is correct
7 Correct 1 ms 860 KB Output is correct
8 Correct 7 ms 1880 KB Output is correct
9 Correct 163 ms 24528 KB Output is correct
10 Correct 1 ms 860 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 7 ms 1876 KB Output is correct
13 Correct 163 ms 24656 KB Output is correct
14 Incorrect 1 ms 860 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 860 KB Output is correct
2 Correct 0 ms 860 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 39 ms 6876 KB Output is correct
5 Correct 166 ms 24492 KB Output is correct
6 Correct 154 ms 24400 KB Output is correct
7 Correct 179 ms 24528 KB Output is correct
8 Incorrect 1 ms 856 KB Answer gives possible 0 while actual possible 1
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 860 KB Output is correct
2 Correct 1 ms 860 KB Output is correct
3 Correct 1 ms 860 KB Output is correct
4 Correct 1 ms 860 KB Output is correct
5 Correct 1 ms 864 KB Output is correct
6 Correct 7 ms 1884 KB Output is correct
7 Correct 161 ms 24404 KB Output is correct
8 Correct 1 ms 860 KB Output is correct
9 Correct 1 ms 860 KB Output is correct
10 Correct 1 ms 860 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 7 ms 1884 KB Output is correct
13 Correct 166 ms 24440 KB Output is correct
14 Incorrect 1 ms 860 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 860 KB Output is correct
2 Correct 1 ms 860 KB Output is correct
3 Correct 1 ms 860 KB Output is correct
4 Correct 1 ms 860 KB Output is correct
5 Correct 1 ms 864 KB Output is correct
6 Correct 7 ms 1884 KB Output is correct
7 Correct 161 ms 24404 KB Output is correct
8 Correct 1 ms 860 KB Output is correct
9 Correct 1 ms 860 KB Output is correct
10 Correct 1 ms 860 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 7 ms 1884 KB Output is correct
13 Correct 166 ms 24440 KB Output is correct
14 Incorrect 1 ms 860 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -