Submission #898712

#TimeUsernameProblemLanguageResultExecution timeMemory
898712MuhammadSaram열대 식물원 (Tropical Garden) (IOI11_garden)C++17
49 / 100
418 ms262144 KiB
#include <bits/stdc++.h> #include "gardenlib.h" using namespace std; void count_routes(int n, int m, int p, int G[][2], int q, int K[]) { vector<pair<int,int>> nei[n]; vector<int> Ne[n]; map<int,int[2]> dp[n][30]; for (int i=0;i<m;i++) { nei[G[i][0]].push_back({i,G[i][1]}); nei[G[i][1]].push_back({i,G[i][0]}); } for (int i=0;i<n;i++) { if (nei[i].size()>1) for (int j=0;j<nei[i].size();j++) { dp[i][0][nei[i][j].first][0]=nei[i][!j].first; dp[i][0][nei[i][j].first][1]=nei[i][!j].second; } else { dp[i][0][nei[i][0].first][0]=nei[i][0].first; dp[i][0][nei[i][0].first][1]=nei[i][0].second; } dp[i][0][m][0]=nei[i][0].first; dp[i][0][m][1]=nei[i][0].second; } for (int i=0;i<n;i++) nei[i].clear(); for (int i=0;i<m;i++) { Ne[G[i][0]].push_back(i); Ne[G[i][1]].push_back(i); } for (int k=1;k<30;k++) for (int i=0;i<n;i++) { for (int j=0;j<Ne[i].size();j++) { dp[i][k][Ne[i][j]][0]=dp[dp[i][k-1][Ne[i][j]][1]][k-1][dp[i][k-1][Ne[i][j]][0]][0]; dp[i][k][Ne[i][j]][1]=dp[dp[i][k-1][Ne[i][j]][1]][k-1][dp[i][k-1][Ne[i][j]][0]][1]; } dp[i][k][m][0]=dp[dp[i][k-1][m][1]][k-1][dp[i][k-1][m][0]][0]; dp[i][k][m][1]=dp[dp[i][k-1][m][1]][k-1][dp[i][k-1][m][0]][1]; } for (int j=0;j<q;j++) { int ans=0,qu=K[j]; for (int i=0;i<n;i++) { int u=i,ed=m; for (int k=29;k>=0;k--) if ((1<<k)&qu) { int x=dp[u][k][ed][1]; ed=dp[u][k][ed][0]; u=x; } if (u==p) ans++; } answer(ans); } }

Compilation message (stderr)

garden.cpp: In function 'void count_routes(int, int, int, int (*)[2], int, int*)':
garden.cpp:19:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |    for (int j=0;j<nei[i].size();j++)
      |                 ~^~~~~~~~~~~~~~
garden.cpp:42:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |    for (int j=0;j<Ne[i].size();j++)
      |                 ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...