답안 #110758

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
110758 2019-05-12T07:52:02 Z ckodser Pipes (BOI13_pipes) C++14
65 / 100
162 ms 27384 KB
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N = 100005;
int n, m, cv, cu, A[N], B[N], M[N], P[N], R[N];
ll C[N], D[N];
vector < int > Adj[N];
void DFSC(int v, int p)
{
	M[v] = 1;
	for (int id : Adj[v])
		if (id != p)
		{
			int u = A[id] ^ B[id] ^ v;
			if (M[u])
				cv = v, cu = u;
			if (!M[u])
				P[u] = v, DFSC(u, id);
		}
}
void DFS(int v, int p)
{
	for (int id : Adj[v])
		if (id != p)
			DFS(A[id] ^ B[id] ^ v, id);
	int par = A[p] ^ B[p] ^ v;
	D[p] += C[v] + C[v];
	C[par] -= C[v];
	C[v] = 0;
}
void DFS2(int v, int p)
{
	M[v] = 2;
	P[v] = p;
	R[v] = Adj[v][0] ^ Adj[v][1] ^ p;
	int u = A[R[v]] ^ B[R[v]] ^ v;
	if (M[u] != 2)
		DFS2(u, R[v]);
}
int main()
{
	scanf("%d%d", &n, &m);
	if (m > n) return !printf("0\n");
	for (int i = 1; i <= n; i++)
		scanf("%lld", &C[i]);
	for (int i = 1; i <= m; i++)
	{
		scanf("%d%d", &A[i], &B[i]);
		Adj[A[i]].pb(i);
		Adj[B[i]].pb(i);
	}
	DFSC(1, 0);
	if (!cv)
		cv = cu = 1;
	vector < int > vec;
	vec.pb(cu);
	while (cv != cu)
		cu = P[cu], vec.pb(cu);
	memset(M, 0, sizeof(M));
	for (int v : vec)
		M[v] = 1;
	for (int v : vec)
		for (int id : Adj[v])
		{
			int u = A[id] ^ B[id] ^ v;
			if (!M[u]) DFS(u, id);
		}
	if (vec.size() > 1)
	{
      	assert(0);
		for (int v : vec)
			for (int i = 0; i < (int)Adj[v].size(); i++)
			{
				int id = Adj[v][i];
				if (!M[A[id] ^ B[id] ^ v])
					swap(Adj[v][i], Adj[v].back()), Adj[v].pop_back(), i --;
			}
		int idd = Adj[vec[0]][0];
		if ((A[idd] ^ B[idd] ^ vec[0]) != vec[1])
			DFS2(vec[0], Adj[vec[0]][0]);
		else
			DFS2(vec[0], Adj[vec[0]][1]);
		vector < ll > Df(vec.size(), 0);
		for (int i = 2; i != 0; i = (i + 2) % (int)vec.size())
		{
			int p1 = i - 1;
			int p2 = i - 2;
			if (p1 < 0)
				p1 = (int)vec.size() - 1;
			if (p2 < 0)
				p2 = (int)vec.size() - 1;
			Df[i] = Df[i] - C[vec[p2]] + C[vec[p1]];
		}
		ll sum = 0;
		for (int i = 0; i < (int)vec.size(); i++)
			sum += C[vec[i]];
		sum /= 2;
		for (int i = 0; i < (int)vec.size(); i++)
			sum -= Df[i];
		sum /= (int)vec.size();
		for (int i = 0; i < (int)vec.size(); i++)
			D[P[vec[i]]] += sum + Df[i];
	}
	for (int i = 1; i <= m; i++)
		printf("%lld\n", D[i]);
	return 0;
}

Compilation message

pipes.cpp: In function 'int main()':
pipes.cpp:43:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &n, &m);
  ~~~~~^~~~~~~~~~~~~~~~
pipes.cpp:46:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &C[i]);
   ~~~~~^~~~~~~~~~~~~~~
pipes.cpp:49:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &A[i], &B[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 3200 KB Output is correct
2 Correct 5 ms 3072 KB Output is correct
3 Correct 5 ms 3072 KB Output is correct
4 Correct 123 ms 9452 KB Output is correct
5 Correct 5 ms 3072 KB Output is correct
6 Correct 5 ms 3072 KB Output is correct
7 Correct 4 ms 3072 KB Output is correct
8 Correct 4 ms 3072 KB Output is correct
9 Correct 6 ms 3200 KB Output is correct
10 Correct 5 ms 3200 KB Output is correct
11 Correct 7 ms 3200 KB Output is correct
12 Correct 6 ms 3200 KB Output is correct
13 Correct 97 ms 8152 KB Output is correct
14 Correct 129 ms 9168 KB Output is correct
15 Correct 133 ms 9464 KB Output is correct
16 Correct 101 ms 8568 KB Output is correct
17 Correct 153 ms 9592 KB Output is correct
18 Correct 116 ms 9464 KB Output is correct
19 Correct 162 ms 11640 KB Output is correct
20 Correct 4 ms 3072 KB Output is correct
21 Correct 5 ms 3200 KB Output is correct
22 Correct 117 ms 9592 KB Output is correct
23 Correct 92 ms 8184 KB Output is correct
24 Correct 129 ms 9592 KB Output is correct
25 Correct 105 ms 8440 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 10 ms 6016 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 12 ms 6244 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 137 ms 21980 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 5 ms 2688 KB Output is correct
5 Correct 5 ms 2688 KB Output is correct
6 Correct 5 ms 2688 KB Output is correct
7 Runtime error 10 ms 6016 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 8 ms 6144 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 9 ms 6016 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Correct 4 ms 2688 KB Output is correct
11 Correct 5 ms 2688 KB Output is correct
12 Correct 4 ms 2688 KB Output is correct
13 Correct 4 ms 2688 KB Output is correct
14 Runtime error 10 ms 6016 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 10 ms 6272 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 10 ms 6144 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 9 ms 6144 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Correct 4 ms 2688 KB Output is correct
19 Correct 4 ms 2688 KB Output is correct
20 Correct 5 ms 2688 KB Output is correct
21 Correct 4 ms 2688 KB Output is correct
22 Runtime error 10 ms 6272 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 107 ms 21060 KB Execution killed with signal 11 (could be triggered by violating memory limits)
24 Runtime error 132 ms 23384 KB Execution killed with signal 11 (could be triggered by violating memory limits)
25 Runtime error 114 ms 21980 KB Execution killed with signal 11 (could be triggered by violating memory limits)
26 Correct 4 ms 2688 KB Output is correct
27 Correct 5 ms 2688 KB Output is correct
28 Correct 4 ms 2688 KB Output is correct
29 Correct 4 ms 2688 KB Output is correct
30 Runtime error 133 ms 26356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
31 Runtime error 126 ms 26868 KB Execution killed with signal 11 (could be triggered by violating memory limits)
32 Runtime error 114 ms 19832 KB Execution killed with signal 11 (could be triggered by violating memory limits)
33 Runtime error 124 ms 23668 KB Execution killed with signal 11 (could be triggered by violating memory limits)
34 Correct 5 ms 2688 KB Output is correct
35 Correct 5 ms 2688 KB Output is correct
36 Correct 4 ms 2688 KB Output is correct
37 Correct 4 ms 2688 KB Output is correct
38 Runtime error 146 ms 25208 KB Execution killed with signal 11 (could be triggered by violating memory limits)
39 Runtime error 118 ms 19108 KB Execution killed with signal 11 (could be triggered by violating memory limits)
40 Runtime error 152 ms 23112 KB Execution killed with signal 11 (could be triggered by violating memory limits)
41 Runtime error 133 ms 26868 KB Execution killed with signal 11 (could be triggered by violating memory limits)
42 Correct 5 ms 2688 KB Output is correct
43 Correct 5 ms 2688 KB Output is correct
44 Correct 4 ms 2688 KB Output is correct
45 Correct 5 ms 2688 KB Output is correct
46 Runtime error 156 ms 27384 KB Execution killed with signal 11 (could be triggered by violating memory limits)
47 Runtime error 134 ms 23028 KB Execution killed with signal 11 (could be triggered by violating memory limits)
48 Runtime error 136 ms 26564 KB Execution killed with signal 11 (could be triggered by violating memory limits)
49 Runtime error 112 ms 18808 KB Execution killed with signal 11 (could be triggered by violating memory limits)
50 Correct 5 ms 2688 KB Output is correct
51 Correct 4 ms 2816 KB Output is correct
52 Correct 3 ms 2688 KB Output is correct
53 Correct 4 ms 2688 KB Output is correct
54 Runtime error 135 ms 24628 KB Execution killed with signal 11 (could be triggered by violating memory limits)