제출 #68164

#제출 시각아이디문제언어결과실행 시간메모리
68164top34051Synchronization (JOI13_synchronization)C++17
0 / 100
283 ms38316 KiB
//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]); }

컴파일 시 표준 에러 (stderr) 메시지

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...