Submission #68164

# Submission time Handle Problem Language Result Execution time Memory
68164 2018-08-16T07:25:34 Z top34051 Synchronization (JOI13_synchronization) C++17
0 / 100
283 ms 38316 KB
//subtask 1
#include<bits/stdc++.h>
using namespace std;

#define pii pair<int,int>
#define X first
#define Y second
const int maxn = 2e5 + 5;

int n,m,q;
vector<int> way[maxn];
pii e[maxn];
vector<int> pos[maxn];
vector<pii> add[maxn];
int ask[maxn];
int res[maxn];

void solve(int u, int last) {
	for(auto v : way[u]) {
		if(v==last) continue;
		solve(v,u);
	}
	sort(add[u].begin(),add[u].end());
	int i = 0, sum = 1, prev = 0;
	for(auto x : pos[u]) {
		while(i<add[u].size() && add[u][i].X <= x) sum += add[u][i++].Y;
//		printf("%d : pos = %d : sum = %d\n",u,x,sum);
		add[last].push_back({x,sum-prev});
		prev = sum;
	}
	res[ask[u]] = sum;
}

int main() {
	scanf("%d%d%d",&n,&m,&q);
	for(int i=1;i<n;i++) {
		int u,v; scanf("%d%d",&u,&v);
		way[u].push_back(v);
		way[v].push_back(u);
		e[i] = {u,v};
	}
	for(int i=1;i<=m;i++) {
		int x; scanf("%d",&x);
		pos[e[x].X].push_back(i);
		pos[e[x].Y].push_back(i);
	}
	int root;
	for(int i=1;i<=q;i++) {
		int x; scanf("%d",&x);
		ask[x] = i;
		root = x;
	}
	solve(root,0);
	for(int i=1;i<=q;i++) printf("%d\n",res[i]);
}

Compilation message

synchronization.cpp: In function 'void solve(int, int)':
synchronization.cpp:26:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(i<add[u].size() && add[u][i].X <= x) sum += add[u][i++].Y;
         ~^~~~~~~~~~~~~~
synchronization.cpp: In function 'int main()':
synchronization.cpp:35:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d",&n,&m,&q);
  ~~~~~^~~~~~~~~~~~~~~~~~~
synchronization.cpp:37:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int u,v; scanf("%d%d",&u,&v);
            ~~~~~^~~~~~~~~~~~~~
synchronization.cpp:43:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int x; scanf("%d",&x);
          ~~~~~^~~~~~~~~
synchronization.cpp:49:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int x; scanf("%d",&x);
          ~~~~~^~~~~~~~~
synchronization.cpp:53:7: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
  solve(root,0);
  ~~~~~^~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14456 KB Output is correct
2 Incorrect 15 ms 14564 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 131 ms 32324 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 32324 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 283 ms 38316 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 15 ms 38316 KB Output isn't correct
2 Halted 0 ms 0 KB -