Submission #1447732


Source Code Expand

#include <bits/stdc++.h>

using namespace std ;

int n ; 

const int MAXN = 100010 ; 

int fa[MAXN], fb[MAXN] ;

vector<int> ga[MAXN], gb[MAXN] ; 


int x[MAXN], y[MAXN] ; 

struct Edge {
		int l, r, bel, typ, t2, nxt ; 
} e[MAXN << 2] ;

bool vis[MAXN << 2] ; 

int ecnt = 1, hed[MAXN] ; 

int due[MAXN] ; 

void addedge(int l, int r, int bel, int typ, int t2) { 
		++ ecnt, e[ecnt].l = l, e[ecnt].r = r, e[ecnt].nxt = hed[l], e[ecnt].bel = bel, e[ecnt].typ = typ, e[ecnt].t2 = t2, hed[l] = ecnt; 
		due[l] ++ ; 
}

void adde(int l, int r, int bel, int typ, int t2) { 
		addedge(l, r, bel, typ, t2) ;
		addedge(r, l, bel, typ ^ 1, t2) ; 
}

void Build() {
		for (int i = 1; i <= n; i ++) { 
				adde(i, fa[i] == -1 ? n + 1 : fa[i], i, 0, 0) ; 
				adde(i, fb[i] == -1 ? n + 1 : fb[i], i, 1, 1) ; 
		}
}

void Dfs(int X) { 
		for (int i = hed[X]; i; i = hed[X]) {
				hed[X] = e[i].nxt ; 
				if (vis[i ^ 1]) continue ; 
				vis[i] = 1;  
				Dfs(e[i].r) ; 
				if (e[i].t2 == 0) { 
						x[e[i].bel] = e[i].typ ? 1 : -1 ; 
				}
				else y[e[i].bel] = e[i].typ ? 1 : -1 ; 
				if (!hed[X]) break ;
		}
}

int main() {

		scanf("%d", &n) ; 
		for (int i = 1; i <= n; i ++) { 
				scanf("%d", &fa[i]) ; 
				if (fa[i] != -1) ga[fa[i]].push_back(i) ; 
		}
		for (int i = 1; i <= n; i ++) { 
				scanf("%d", &fb[i]) ; 
				if (fb[i] != -1) gb[fb[i]].push_back(i) ; 
		}
		Build() ; 
		for (int i = 1; i <= n; i ++) { 
				if (due[i] & 1) {
						puts("IMPOSSIBLE") ; 
						return 0 ; 
				}
		}
		puts("POSSIBLE");  	
		Dfs(n + 1) ; 
		for (int i = 1; i <= n; i ++) { 
				int tmp = x[i] ; 
				for (int j = 0; j < ga[i].size(); j ++) { 
						tmp -= x[ga[i][j]] ; 
				}
				printf("%d%c", tmp, i == n ? 10 : ' '); 
		}
}







	

Submission Info

Submission Time
Task F - Two Trees
User yjqqqaq
Language C++14 (GCC 5.4.1)
Score 1700
Code Size 1822 Byte
Status AC
Exec Time 75 ms
Memory 26496 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:59:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &n) ; 
                   ^
./Main.cpp:61:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &fa[i]) ; 
                         ^
./Main.cpp:65:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &fb[i]) ; 
                         ^

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 3 ms 6400 KB
sample_02.txt AC 3 ms 6400 KB
sample_03.txt AC 3 ms 6400 KB
subtask_1_01.txt AC 3 ms 6400 KB
subtask_1_02.txt AC 3 ms 6400 KB
subtask_1_03.txt AC 26 ms 16384 KB
subtask_1_04.txt AC 50 ms 21120 KB
subtask_1_05.txt AC 39 ms 19840 KB
subtask_1_06.txt AC 17 ms 11904 KB
subtask_1_07.txt AC 41 ms 17152 KB
subtask_1_08.txt AC 16 ms 12540 KB
subtask_1_09.txt AC 24 ms 15744 KB
subtask_1_10.txt AC 42 ms 20096 KB
subtask_1_11.txt AC 11 ms 10368 KB
subtask_1_12.txt AC 60 ms 24576 KB
subtask_1_13.txt AC 29 ms 16768 KB
subtask_1_14.txt AC 10 ms 10624 KB
subtask_1_15.txt AC 18 ms 10880 KB
subtask_1_16.txt AC 23 ms 17144 KB
subtask_1_17.txt AC 18 ms 13184 KB
subtask_1_18.txt AC 59 ms 24960 KB
subtask_1_19.txt AC 41 ms 20352 KB
subtask_1_20.txt AC 68 ms 26112 KB
subtask_1_21.txt AC 42 ms 20864 KB
subtask_1_22.txt AC 42 ms 22912 KB
subtask_1_23.txt AC 69 ms 26240 KB
subtask_1_24.txt AC 61 ms 20992 KB
subtask_1_25.txt AC 27 ms 17528 KB
subtask_1_26.txt AC 36 ms 19452 KB
subtask_1_27.txt AC 64 ms 25856 KB
subtask_1_28.txt AC 42 ms 20352 KB
subtask_1_29.txt AC 72 ms 26112 KB
subtask_1_30.txt AC 42 ms 20736 KB
subtask_1_31.txt AC 42 ms 22912 KB
subtask_1_32.txt AC 69 ms 26112 KB
subtask_1_33.txt AC 61 ms 20992 KB
subtask_1_34.txt AC 27 ms 17528 KB
subtask_1_35.txt AC 36 ms 19452 KB
subtask_1_36.txt AC 65 ms 25856 KB
subtask_1_37.txt AC 68 ms 26112 KB
subtask_1_38.txt AC 68 ms 26112 KB
subtask_1_39.txt AC 75 ms 26112 KB
subtask_1_40.txt AC 69 ms 26112 KB
subtask_1_41.txt AC 70 ms 26368 KB
subtask_1_42.txt AC 43 ms 24440 KB
subtask_1_43.txt AC 64 ms 25856 KB
subtask_1_44.txt AC 69 ms 26112 KB
subtask_1_45.txt AC 69 ms 26112 KB
subtask_1_46.txt AC 69 ms 26112 KB
subtask_1_47.txt AC 68 ms 26112 KB
subtask_1_48.txt AC 74 ms 26368 KB
subtask_1_49.txt AC 42 ms 24440 KB
subtask_1_50.txt AC 67 ms 25856 KB
subtask_1_51.txt AC 69 ms 26112 KB
subtask_1_52.txt AC 69 ms 26112 KB
subtask_1_53.txt AC 69 ms 26112 KB
subtask_1_54.txt AC 69 ms 26112 KB
subtask_1_55.txt AC 71 ms 26240 KB
subtask_1_56.txt AC 43 ms 24440 KB
subtask_1_57.txt AC 66 ms 25856 KB
subtask_1_58.txt AC 71 ms 26112 KB
subtask_1_59.txt AC 69 ms 26112 KB
subtask_1_60.txt AC 69 ms 26112 KB
subtask_1_61.txt AC 69 ms 26112 KB
subtask_1_62.txt AC 70 ms 26496 KB
subtask_1_63.txt AC 43 ms 24440 KB
subtask_1_64.txt AC 64 ms 25856 KB