제출 #394297

#제출 시각아이디문제언어결과실행 시간메모리
394297koste4ka슈퍼트리 잇기 (IOI20_supertrees)C++17
11 / 100
259 ms22156 KiB
#include "supertrees.h"
#include <bits/stdc++.h>

using namespace std;

int construct(std::vector<std::vector<int>> p) {
	int n = p.size();
	std::vector<std::vector<int>> answer;
	for (int i = 0; i < n; i++) {
		std::vector<int> row;
		row.resize(n);
		answer.push_back(row);
	}
	vector < bool > u(n);
    vector < int > now;
    vector < vector < int > > all;
    for (int i = 0; i < n; ++i) {
        if (u[i]) {
            continue;
        }
        now.clear();
        for (int j = i; j < n; ++j) {
            if (u[j] || p[i][j] != 1) {
                continue;
            }
            now.push_back(j);
            u[j] = 1;
        }
        for (auto v : now) {
            for (auto u : now) {
                if (p[v][u] != 1) {
                    return 0;
                }
            }
        }
        for (int j = 1; j < (int)(now.size()); ++j) {
            answer[now[j - 1]][now[j]] = 1;
            answer[now[j]][now[j - 1]] = 1;
        }
        all.push_back(now);
    }
    int last;
    for (int i = 0; i < n; ++i) {
        u[i] = 0;
    }
    for (int i = 0; i < (int)(all.size()); ++i) {
        if (u[all[i].back()]) {
            continue;
        }
        last = all[i].back();
        for (int j = i + 1; j < (int)(all.size()); ++j) {
            if (p[last][all[j].back()] == 2) {
                answer[last][all[j].back()] = 1;
                answer[all[j].back()][last] = 1;
                last = all[j].back();
            }
        }
        if (last != all[i].back()) {
            answer[last][all[i].back()] = 1;
            answer[all[i].back()][last] = 1;
        }
    }
    build(answer);
	return 1;
}
#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...