답안 #1074332

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1074332 2024-08-25T09:46:45 Z Malix 열대 식물원 (Tropical Garden) (IOI11_garden) C++14
0 / 100
3 ms 3164 KB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>
using namespace std;

#define REP(a,b,c) for(int a=b;a<c;a++)
#define F first
#define S second
#define PB push_back
#define LSOne(s) ((s)&(-s))

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<vii> viii;
typedef pair<int,int> pi;
typedef vector<pi> pii;

vii a,b,c;
int k=0;
int p=log2(1000000000)+1;
vector<vector<pii>> arr,brr;

int solve(int x,int y){
  int t=0;
  while(y){
    int z=LSOne(y);
    pi tmp=arr[x][log2(z)][t];
    x=tmp.F;
    if(tmp.S==a[x][0])t=1;
    else t=0;
    y-=z;
  }
  return x;
}

void count_routes(int n, int m, int P, int R[][2], int Q, int G[])
{
  a.resize(n);
  REP(i,0,m){
    int x=R[i][0];
    int y=R[i][1];
    a[x].PB(y);
    a[y].PB(x);
  }
  arr.resize(n,vector<pii>(p+1,pii(2)));
  brr.resize(n,vector<pii>(p+1,pii(2)));
  REP(i,0,n){
    arr[i][1][0]={a[i][0],i};
    if(a[i].size()==1)arr[i][1][1]={a[i][0],i};
    else arr[i][1][1]={a[i][1],i};
  }
  //1 - came from larger
  REP(j,2,p+1)REP(i,0,n){
    pi x=arr[i][j-1][0];
    pi y=arr[i][j-1][1];
    if(x.S==a[x.F][0])arr[i][j][0]=arr[x.F][j-1][1];
    else arr[i][j][0]=arr[x.F][j-1][0];
    if(y.S==a[y.F][0])arr[i][j][1]=arr[y.F][j-1][1];
    else arr[i][j][1]=arr[y.F][j-1][0];
  }
  int ans=0;
  REP(i,0,n)if(solve(i,G[0])==P)ans++;
  answer(ans);
}


# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -