# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
429645 | Amylopectin | 게임 (IOI14_game) | C++14 | 535 ms | 19076 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <stdio.h>
#include "game.h"
//#include "grader.cpp"
using namespace std;
const int mxn = 2e3 + 10;
int gr[mxn] = {},ctg[mxn][mxn] = {},ra[mxn] = {},n,mem[mxn] = {};
int figr(int l)
{
int cn = l,f;
while(gr[cn] != cn)
{
cn = gr[cn];
}
while(gr[l] != l)
{
f = gr[l];
gr[l] = cn;
l = f;
}
return cn;
}
int mer(int l,int r)
{
int pl,pr,f,i,j;
pl = figr(l);
pr = figr(r);
if(ra[pl] < ra[pr])
{
f = pl;
pl = pr;
pr = f;
}
gr[pr] = pl;
mem[pl] += mem[pr];
if(ra[pl] == ra[pr])
{
ra[pl] ++;
}
for(i=0; i<n; i++)
{
ctg[pl][i] += ctg[pr][i];
ctg[i][pl] += ctg[i][pr];
}
return 0;
}
void initialize(int nn)
{
int i,j;
n = nn;
for(i=0; i<n; i++)
{
mem[i] = 1;
gr[i] = i;
}
}
int hasEdge(int u, int v)
{
int i,j,pl = figr(u),pr = figr(v);
if(pl == pr)
{
return 0;
}
ctg[pl][pr] ++;
ctg[pr][pl] ++;
if(ctg[pl][pr] == mem[pl] * mem[pr])
{
mer(pl,pr);
return 1;
}
return 0;
}
//int main()
//{
// cout << "Hello world!" << endl;
// return 0;
//}
컴파일 시 표준 에러 (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... |