답안 #130097

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
130097 2019-07-13T22:22:47 Z Markomafko972 Regions (IOI09_regions) C++14
0 / 100
2402 ms 131072 KB
#include <bits/stdc++.h>
#define X first
#define Y second
typedef long long ll;
using namespace std;
 
const int MOD = 1e9 + 7;
const ll INF = 1e18;
 
int n, r, q, cv, q1, q2;
int sq;
vector<int> v[200002];
unordered_map<int, ll> m[25002];
int w[200002];
int kol[200002];
int kol2[200002];
vector<int> g[200002];
int t;
int d1[200002];
int d2[200002];
 
void dfs(int x) {
	for (int i = 0; i < v[x].size(); i ++) {
		int sus = v[x][i];
		dfs(sus);
		kol[x] += kol[sus];
	}
	
	//cout << "mapa od " << x << ", " << t << " += " << kol[x] << endl; 
	m[w[x]][t] += kol[x];
}
 
void rek(int x, int y) {
	y += kol2[x];
	m[t][w[x]] += y;
	for (int i = 0; i < v[x].size(); i ++) {
		rek(v[x][i], y);
	}
}
 
int tren;
void ord(int x) {
	tren ++;
	d1[x] = tren;
	for (int i = 0; i < v[x].size(); i ++) {
		ord(v[x][i]);
	}
	d2[x] = tren;
	//cout << x << ": " << d1[x] << " " << d2[x] << endl;
}
 
int main () {
 
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin >> n >> r >> q;
	sq = sqrt(n);
	cin >> w[1];
	g[w[1]].push_back(1);
	for (int i = 2; i <= n; i ++) {
		cin >> cv >> w[i];
		g[w[i]].push_back(i);
		v[cv].push_back(i);
	}
	
	ord(1);
	
	for (int i = 1; i <= r; i ++) {
		if (g[i].size() > sq) {
			memset(kol, 0, sizeof kol);
			memset(kol2, 0, sizeof kol2);
			t = i;
			for (int j = 0; j < g[i].size(); j ++) {
				kol[g[i][j]] = 1;
				kol2[g[i][j]] = 1;
			}
			
			dfs(1);
			rek(1, 0);
		}
	}
	
	for (int i = 0; i < q; i ++) {
		cin >> q1 >> q2;
		if (g[q1].size() > sq && g[q2].size() > sq) {
			m[q1][q2] /= 2;
		}
		
		if (g[q1].size() <= sq && g[q2].size() <= sq) {
 			assert(0);
		}
		
		cout << max(0LL, m[q1][q2]) << endl;
	}
 
	return 0;
}

Compilation message

regions.cpp: In function 'void dfs(int)':
regions.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < v[x].size(); i ++) {
                  ~~^~~~~~~~~~~~~
regions.cpp: In function 'void rek(int, int)':
regions.cpp:36:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < v[x].size(); i ++) {
                  ~~^~~~~~~~~~~~~
regions.cpp: In function 'void ord(int)':
regions.cpp:45:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < v[x].size(); i ++) {
                  ~~^~~~~~~~~~~~~
regions.cpp: In function 'int main()':
regions.cpp:69:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (g[i].size() > sq) {
       ~~~~~~~~~~~~^~~~
regions.cpp:73:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int j = 0; j < g[i].size(); j ++) {
                    ~~^~~~~~~~~~~~~
regions.cpp:85:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (g[q1].size() > sq && g[q2].size() > sq) {
       ~~~~~~~~~~~~~^~~~
regions.cpp:85:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (g[q1].size() > sq && g[q2].size() > sq) {
                            ~~~~~~~~~~~~~^~~~
regions.cpp:89:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (g[q1].size() <= sq && g[q2].size() <= sq) {
       ~~~~~~~~~~~~~^~~~~
regions.cpp:89:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (g[q1].size() <= sq && g[q2].size() <= sq) {
                             ~~~~~~~~~~~~~^~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 29 ms 25592 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 26 ms 22260 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 26 ms 22392 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 26 ms 22264 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 26 ms 22300 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 26 ms 22392 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 26 ms 22392 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 32 ms 22648 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 38 ms 23144 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 29 ms 23288 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 32 ms 23800 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 35 ms 24628 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 35 ms 23996 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 55 ms 28408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 51 ms 33320 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# 결과 실행 시간 메모리 Grader output
1 Runtime error 265 ms 34936 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 187 ms 31992 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 156 ms 37880 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 47 ms 25080 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 49 ms 27640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 935 ms 90684 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 1314 ms 118792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 2402 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 106 ms 38420 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 2398 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
11 Runtime error 126 ms 37624 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 318 ms 50040 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 253 ms 50360 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 2116 ms 111752 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 261 ms 61356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 225 ms 72556 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 1524 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)