# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
910182 | vjudge1 | Amusement Park (JOI17_amusement_park) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long lli;
typedef pair<lli, lli> ii;
typedef vector<lli> vi;
typedef vector<ii> vii;
#define f first
#define s second
#define pb push_back
#define sz(v) (v).size()
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define ENDL '\n'
#define fore(a,b,c) for(lli a = (b), fgh = (c); a < fgh; a ++)
#define _ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
const lli NN = 1e4 + 5;
lli valval[NN];
vi adjadj[NN];
int nn, mm, tt, pp, pos, vv;
lli xx, co = 0;
bool bs(lli val, vi &v){
sort(all(v));
lli pos = -1, s = sz(v);
while(s){
while(pos + s < sz(v) and v[pos + s] < val) pos += s;
s /= 2;
}
pos ++;
if(pos >= sz(v) or v[pos] != val) return false;
return true;
}
void Fwa(lli i){
cout << "WA " << i << ENDL;
}
void MessageBoard(int attr, int msg){
if(attr < 0 or nn <= attr or valval[attr] != 0) Fwa(1);
valval[attr] = msg + 1;
co ++;
}
int Move(int dest){
if(!bs(dest, adjadj[pos])) Fwa(2);
pos = dest;
return valval[pos] - 1;
}
void Joi(int N, int M, int A[], int B[], lli X, int T){
fore(i,0,60){
MessageBoard(i,X % 2);
X /= 2;
}
fore(i,60,N){
MessageBoard(i,0);
}
}
const lli N = 1e4 + 5;
vi adj[N];
lli val[N];
bool vis[N];
void dfs(lli p, lli org, lli ant){
if(p != org) val[p] = Move(p);
for(auto i: adj[p]){
if(i == p or vis[i] == true) continue;
vis[i] = true;
dfs(i, org, p);
}
if(ant != -1) Move(ant);
}
lli Ioi(int N, int M, int A[], int B[], int P, int V, int T){
fore(i,0,M){
adj[A[i]].pb(B[i]);
adj[B[i]].pb(A[i]);
}
vis[P] = true;
dfs(P,P,-1);
lli x = 1, ans = 0;
fore(i,0,60){
ans += val[i] * x;
x *= 2;
}
return ans;
}
int main(){ _
cin >> nn >> mm;
int aa[mm], bb[mm];
fore(i,0,mm){
lli ap, bp; cin >> ap >> bp;
aa[i] = ap, bb[i] = bp;
adjadj[ap].pb(bp);
adjadj[bp].pb(ap);
}
cin >> xx >> pp >> vv >> tt;
pos = pp;
Joi(nn, mm, aa, bb, xx, tt);
if(co != nn) Fwa(3);
lli gans = Ioi(nn, mm, aa, bb, pp, valval[pp] - 1, tt);
if(gans == xx) cout << "ACC" << ENDL;
else cout << "WA" << ENDL;
cout << gans << ENDL;
fore(i,0,60) cout << valval[i] << ' '; cout << ENDL;
fore(i,0,60) cout << val[i] << ' '; cout << ENDL;
// fore(i,0,5){ for(auto j: adj[i]) cout << j << ' '; cout << ENDL; }
return 0;
}