Submission #1450072


Source Code Expand

#include <bits/stdc++.h>
#include <random>
using namespace std;

#define rep(i, N) for (int i = 0; i < N; i++)
#define pb push_back

typedef long long ll;
typedef pair<int, int> i_i;
typedef pair<ll, int> ll_i;

int sign = 0;

void dfs(int u, vector<multiset<int> >& G, vector<int>& a, set<int>& st) {
	int N = a.size();
	if (G[u].empty()) {
		st.erase(u);
		return;
	}
	int v = *G[u].begin();
	if (v >= 0) {
		auto it = G[u].find(v);
		G[u].erase(it);
		it = G[v].find(u);
		G[v].erase(it);
		a[u]++, a[v]--;
		dfs(v, G, a, st);
	}
	else {
		v = ~v;
		auto it = G[u].find(~v);
		G[u].erase(it);
		it = G[v].find(~u);
		G[v].erase(it);
		a[u]--, a[v]++;
		dfs(v, G, a, st);
	}
}

int main() {
	int N; cin >> N;
	vector<int> p(N), q(N);
	rep(u, N) scanf("%d", &p[u]), p[u]--;
	rep(u, N) scanf("%d", &q[u]), q[u]--;
	vector<multiset<int> > G(N + 1);
	rep(u, N) if (p[u] != -2) {
		int v = p[u];
		G[u].insert(v);
		G[v].insert(u);
	}
	else G[u].insert(N), G[N].insert(u);
	rep(u, N) if (q[u] != -2) {
		int v = q[u];
		G[u].insert(~v);
		G[v].insert(~u);
	}
	else G[u].insert(~N), G[N].insert(~u);
	rep(u, N) if (G[u].size() % 2) {
		cout << "IMPOSSIBLE" << endl;
		return 0;
	}
	set<int> st;
	rep(u, N + 1) st.insert(u);
	vector<int> a(N + 1);
	while (st.size()) {
		int u = *st.begin();
		dfs(u, G, a, st);
	}
	cout << "POSSIBLE" << endl;
	rep(u, N) printf("%d ", a[u] / 2);
	cout << endl;
}

Submission Info

Submission Time
Task F - Two Trees
User sugim48
Language C++14 (GCC 5.4.1)
Score 1700
Code Size 1464 Byte
Status AC
Exec Time 162 ms
Memory 42240 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:43:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  rep(u, N) scanf("%d", &p[u]), p[u]--;
                                      ^
./Main.cpp:44:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  rep(u, N) scanf("%d", &q[u]), q[u]--;
                                      ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1700 / 1700
Status
AC × 3
AC × 70
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt, subtask_1_56.txt, subtask_1_57.txt, subtask_1_58.txt, subtask_1_59.txt, subtask_1_60.txt, subtask_1_61.txt, subtask_1_62.txt, subtask_1_63.txt, subtask_1_64.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
subtask_1_01.txt AC 1 ms 256 KB
subtask_1_02.txt AC 1 ms 256 KB
subtask_1_03.txt AC 44 ms 14848 KB
subtask_1_04.txt AC 99 ms 28928 KB
subtask_1_05.txt AC 68 ms 22144 KB
subtask_1_06.txt AC 33 ms 10368 KB
subtask_1_07.txt AC 88 ms 28416 KB
subtask_1_08.txt AC 40 ms 12928 KB
subtask_1_09.txt AC 40 ms 14720 KB
subtask_1_10.txt AC 88 ms 27008 KB
subtask_1_11.txt AC 17 ms 5248 KB
subtask_1_12.txt AC 126 ms 36352 KB
subtask_1_13.txt AC 50 ms 17024 KB
subtask_1_14.txt AC 16 ms 4608 KB
subtask_1_15.txt AC 36 ms 12032 KB
subtask_1_16.txt AC 70 ms 19968 KB
subtask_1_17.txt AC 32 ms 11520 KB
subtask_1_18.txt AC 139 ms 33536 KB
subtask_1_19.txt AC 78 ms 24448 KB
subtask_1_20.txt AC 152 ms 39808 KB
subtask_1_21.txt AC 76 ms 24448 KB
subtask_1_22.txt AC 73 ms 24448 KB
subtask_1_23.txt AC 155 ms 41472 KB
subtask_1_24.txt AC 146 ms 42240 KB
subtask_1_25.txt AC 87 ms 24448 KB
subtask_1_26.txt AC 71 ms 24448 KB
subtask_1_27.txt AC 153 ms 39680 KB
subtask_1_28.txt AC 75 ms 24448 KB
subtask_1_29.txt AC 153 ms 38528 KB
subtask_1_30.txt AC 76 ms 24448 KB
subtask_1_31.txt AC 76 ms 24448 KB
subtask_1_32.txt AC 153 ms 39424 KB
subtask_1_33.txt AC 143 ms 42240 KB
subtask_1_34.txt AC 86 ms 24448 KB
subtask_1_35.txt AC 71 ms 24448 KB
subtask_1_36.txt AC 155 ms 42240 KB
subtask_1_37.txt AC 154 ms 41984 KB
subtask_1_38.txt AC 153 ms 41856 KB
subtask_1_39.txt AC 156 ms 38400 KB
subtask_1_40.txt AC 154 ms 38272 KB
subtask_1_41.txt AC 153 ms 40320 KB
subtask_1_42.txt AC 151 ms 29824 KB
subtask_1_43.txt AC 156 ms 38400 KB
subtask_1_44.txt AC 155 ms 42240 KB
subtask_1_45.txt AC 150 ms 37888 KB
subtask_1_46.txt AC 150 ms 42112 KB
subtask_1_47.txt AC 157 ms 37888 KB
subtask_1_48.txt AC 158 ms 42240 KB
subtask_1_49.txt AC 148 ms 30208 KB
subtask_1_50.txt AC 153 ms 41984 KB
subtask_1_51.txt AC 150 ms 41984 KB
subtask_1_52.txt AC 155 ms 41088 KB
subtask_1_53.txt AC 150 ms 41344 KB
subtask_1_54.txt AC 152 ms 37632 KB
subtask_1_55.txt AC 154 ms 41344 KB
subtask_1_56.txt AC 151 ms 34176 KB
subtask_1_57.txt AC 159 ms 39040 KB
subtask_1_58.txt AC 150 ms 36992 KB
subtask_1_59.txt AC 155 ms 40064 KB
subtask_1_60.txt AC 155 ms 35968 KB
subtask_1_61.txt AC 148 ms 35328 KB
subtask_1_62.txt AC 154 ms 41856 KB
subtask_1_63.txt AC 162 ms 38784 KB
subtask_1_64.txt AC 156 ms 42240 KB