/*
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// a_len은 배열 a의 길이입니다.
// edges_rows는 2차원 배열 edges의 행 길이, edges_cols는 2차원 배열 edges의 열 길이입니다.
void dfs(int** tree, size_t a_len)
{
int i;
for(i=0;i<a_len;i++) {
tree[]
}
}
long long solution(int a[], size_t a_len, int** edges, size_t edges_rows, size_t edges_cols) {
long long answer=-2;
int i, sum=0;
for(i=0;i<a_len;i++) {
sum+=a[i];
if(sum!=0) {
return -1;
}
dfs(edges, a_len);
}
return answer;
}
*/
/*
void dfs(int** tree, int* a, int a_len)
{
int i, parent=0, sum=0;
for(i=0;i<a_len;i++) {
if(tree[a[i]][i]!=parent)
dfs(tree, a, a_len);
// 부모 노드로 가중치 몰빵시키기
// 가중치 몰빵시킨 것의 절대값 다 더하기
}
}
*/
#include <stdio.h>
#include <math.h>
long long answer=0;
int** tree;
void dfs(int a_len, int now, int pre)
{
int i;
for(i=0;i<a_len;i++) {
if(tree[now][i]!=pre) { // 이미 방문했던 곳은 제외하고
dfs(a_len, tree[now][i], now); // 0부터 a_len-1까지 탐색하기
}
}
}
long long solution(int a[], size_t a_len, int** edges, size_t edges_rows, size_t edges_cols) {
int i, sum=0;
for(i=0;i<a_len;i++) {
sum+=a[i];
if(sum!=0) {
answer=-1;
return answer;
}
}
dfs(a_len, 0, 0);
return answer;
}