# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
791877 | 2023-07-24T12:02:07 Z | Amylopectin | Star Trek (CEOI20_startrek) | C++14 | 1000 ms | 58384 KB |
#include <stdio.h> #include <iostream> #include <vector> #include <algorithm> #include <set> #include <stdlib.h> using namespace std; const long long mxn = 1e6 + 10,mo = 1e9 + 7; struct we { long long to,val[2][2],cur[2],num,ft; }; vector<struct we> pat[mxn] = {}; long long pid[mxn][2] = {},rwol,stt[mxn][2][3] = {}; long long re(long long cn,long long cidx,long long wh) { long long i,j,fn,fm,ccur = -1,cva0 = 0,fidx,wop = (wh+1)%2,fcur,fva0,cva1 = 0,fva1; if(cidx != -1) { if(pat[cn][cidx].cur[wh] != -1) { return 0; } } for(i=0; i<pat[cn].size(); i++) { fn = pat[cn][i].to; if(i == cidx) { continue; } fidx = pid[pat[cn][i].num][(pat[cn][i].ft + 1)%2]; re(fn,fidx,wop); fcur = pat[fn][fidx].cur[wop]; fva0 = pat[fn][fidx].val[wop][0]; fva1 = pat[fn][fidx].val[wop][1]; if(wh == 0) { if(ccur == -1) { ccur = fcur; if(ccur < 2) { cva0 = fva0; cva1 = fva1; } } else { if(fcur == 0) { if(ccur != 0) { cva0 = fva0; cva1 = 0; } else { cva0 = 0; } ccur = 0; } else if(fcur == 1) { if(ccur == 0) { // cva0 += fva0; // cva += fva; } else if(ccur == 1) { cva1 += fva1; cva0 = 0; } else { ccur = 1; cva1 += fva1; cva0 = 0; } } } } else { if(ccur == -1) { ccur = fcur; if(ccur == 2) { ccur = 1; } // if(ccur < 2) // { // cva = fva; cva0 = fva0; cva1 = fva1; // } } else { if(ccur == 0) { if(fcur == 0) { cva0 += fva0; } else if(fcur == 1) { ccur = 1; cva0 = fva0; cva1 = fva1; } else { cva0 = fva0; cva1 = fva1; ccur = 1; } } else if(ccur == 1) { if(fcur >= 1) { cva0 = 0; cva1 = 0; ccur = 2; } } } } } if(wh == 0) { if(ccur == -1) { ccur = 1; cva1 = 1; cva0 = 0; } else if(ccur == 0) { // cva ++; } else if(ccur >= 1) { ccur = 1; cva1 ++; } } else { if(ccur == -1) { ccur = 0; cva0 = 1; } else if(ccur == 0) { cva0 ++; } } if(cidx == -1) { stt[cn][wh][0] = cva0; stt[cn][wh][1] = cva1; stt[cn][wh][2] = ccur; } else { pat[cn][cidx].cur[wh] = ccur; pat[cn][cidx].val[wh][0] = cva0; pat[cn][cidx].val[wh][1] = cva1; } return 0; } int main() { // freopen("input1.txt","r",stdin); long long i,j,n,m,cn,cm,fn,fm,cl,cr,su,cen,cva0,cva1,ccur,uw,ans; scanf("%lld %lld",&n,&m); for(i=1; i<n; i++) { scanf("%lld %lld",&cn,&cm); pid[i][0] = pat[cn].size(); pid[i][1] = pat[cm].size(); pat[cn].push_back({cm,{{-1,-1},{-1,-1}},{-1,-1},i,0}); pat[cm].push_back({cn,{{-1,-1},{-1,-1}},{-1,-1},i,1}); } uw = 0; cva0 = 0; cva1 = 0; for(i=1; i<=n; i++) { re(i,-1,0); re(i,-1,1); if(stt[i][0][2] == 0) { cva0 ++; } if(stt[i][1][2] == 0) { cva1 ++; } } ans = 0; if(stt[1][0][2] == 0) { ans = ((n - stt[1][0][0] - stt[1][0][1]) * n) % mo; } ans += stt[1][0][0] * cva0 + stt[1][0][1] * cva1; ans %= mo; printf("%lld\n",ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 18 ms | 23764 KB | Output is correct |
2 | Incorrect | 12 ms | 24020 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 11 ms | 23792 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 23764 KB | Output is correct |
2 | Correct | 10 ms | 23796 KB | Output is correct |
3 | Correct | 14 ms | 23812 KB | Output is correct |
4 | Correct | 11 ms | 23764 KB | Output is correct |
5 | Correct | 10 ms | 23792 KB | Output is correct |
6 | Correct | 11 ms | 23792 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 23764 KB | Output is correct |
2 | Correct | 10 ms | 23796 KB | Output is correct |
3 | Correct | 14 ms | 23812 KB | Output is correct |
4 | Correct | 11 ms | 23764 KB | Output is correct |
5 | Correct | 10 ms | 23792 KB | Output is correct |
6 | Correct | 11 ms | 23792 KB | Output is correct |
7 | Correct | 14 ms | 24104 KB | Output is correct |
8 | Correct | 11 ms | 24148 KB | Output is correct |
9 | Correct | 16 ms | 24004 KB | Output is correct |
10 | Correct | 12 ms | 24048 KB | Output is correct |
11 | Correct | 13 ms | 24016 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 23764 KB | Output is correct |
2 | Correct | 10 ms | 23796 KB | Output is correct |
3 | Correct | 14 ms | 23812 KB | Output is correct |
4 | Correct | 11 ms | 23764 KB | Output is correct |
5 | Correct | 10 ms | 23792 KB | Output is correct |
6 | Correct | 11 ms | 23792 KB | Output is correct |
7 | Correct | 14 ms | 24104 KB | Output is correct |
8 | Correct | 11 ms | 24148 KB | Output is correct |
9 | Correct | 16 ms | 24004 KB | Output is correct |
10 | Correct | 12 ms | 24048 KB | Output is correct |
11 | Correct | 13 ms | 24016 KB | Output is correct |
12 | Correct | 224 ms | 51764 KB | Output is correct |
13 | Correct | 188 ms | 58384 KB | Output is correct |
14 | Execution timed out | 1088 ms | 41928 KB | Time limit exceeded |
15 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 23764 KB | Output is correct |
2 | Correct | 10 ms | 23796 KB | Output is correct |
3 | Correct | 14 ms | 23812 KB | Output is correct |
4 | Correct | 11 ms | 23764 KB | Output is correct |
5 | Correct | 10 ms | 23792 KB | Output is correct |
6 | Correct | 11 ms | 23792 KB | Output is correct |
7 | Correct | 14 ms | 24104 KB | Output is correct |
8 | Correct | 11 ms | 24148 KB | Output is correct |
9 | Correct | 16 ms | 24004 KB | Output is correct |
10 | Correct | 12 ms | 24048 KB | Output is correct |
11 | Correct | 13 ms | 24016 KB | Output is correct |
12 | Correct | 15 ms | 23764 KB | Output is correct |
13 | Incorrect | 13 ms | 23996 KB | Output isn't correct |
14 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 23764 KB | Output is correct |
2 | Correct | 10 ms | 23796 KB | Output is correct |
3 | Correct | 14 ms | 23812 KB | Output is correct |
4 | Correct | 11 ms | 23764 KB | Output is correct |
5 | Correct | 10 ms | 23792 KB | Output is correct |
6 | Correct | 11 ms | 23792 KB | Output is correct |
7 | Correct | 14 ms | 24104 KB | Output is correct |
8 | Correct | 11 ms | 24148 KB | Output is correct |
9 | Correct | 16 ms | 24004 KB | Output is correct |
10 | Correct | 12 ms | 24048 KB | Output is correct |
11 | Correct | 13 ms | 24016 KB | Output is correct |
12 | Correct | 224 ms | 51764 KB | Output is correct |
13 | Correct | 188 ms | 58384 KB | Output is correct |
14 | Execution timed out | 1088 ms | 41928 KB | Time limit exceeded |
15 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 18 ms | 23764 KB | Output is correct |
2 | Incorrect | 12 ms | 24020 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |