# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
898712 | MuhammadSaram | Tropical Garden (IOI11_garden) | C++17 | 418 ms | 262144 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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);
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |