# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1114831 | 2024-11-19T16:49:19 Z | presko | 슈퍼트리 잇기 (IOI20_supertrees) | C++14 | 165 ms | 24152 KB |
#include "supertrees.h" #include <iostream> #include <vector> #include <algorithm> #define MAXN 1010 using namespace std; int parent[MAXN]; vector<pair<int,int>> used[MAXN]; bool done[MAXN]; int find(int curr) { if(parent[curr]==curr)return curr; return parent[curr]=find(parent[curr]); } void unite(int a, int b, int t) { a=find(a); b=find(b); if(a==b)return; if(used[a].size()<used[b].size())swap(a,b); parent[b]=a; used[a].push_back({t,b}); for(int i=0;i<used[b].size();i++) { if(used[b][i].second==b)continue; used[a].push_back(used[b][i]); } } int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>> ans; for(int i=0;i<n;i++) { vector<int> dump(n,0); ans.push_back(dump); parent[i]=i; used[i]={{1,i}}; } for (int i = 0; i < n; i++) { for(int j=0;j<n;j++) { if(i==j)continue; if(p[i][j]==1){unite(i,j,1);} if(p[i][j]==2){unite(i,j,2);} } } for(int i=0;i<n;i++) { sort(used[i].begin(),used[i].end()); } for(int i=0;i<n;i++) { int x=find(i); if(done[x])continue; for(int j=1;j<used[x].size();j++) { int val=used[x][j].second,t=used[x][j].first; if(t==0 || t==2 || used[x][j-1].first==0)continue; ans[used[x][j-1].second][val]=1; ans[val][used[x][j-1].second]=1; } for(int j=1;j<used[x].size();j++) { int val=used[x][j].second,t=used[x][j].first; if(t==0 || t==1)continue; if(used[x][j-1].first==1) { int left=used[x].size()-j; if(left==1)return 0; if(left==2) { ans[used[x][j-1].second][val]=1; ans[val][used[x][j-1].second]=1; ans[used[x][j-1].second][used[x][j+1].second]=1; ans[used[x][j+1].second][used[x][j-1].second]=1; } else { ans[used[x][j-1].second][val]=1; ans[val][used[x][j-1].second]=1; } continue; } ans[used[x][j-1].second][val]=1; ans[val][used[x][j-1].second]=1; } done[x]=1; } build(ans); return 1; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 1 ms | 336 KB | Output is correct |
5 | Correct | 1 ms | 336 KB | Output is correct |
6 | Correct | 6 ms | 1360 KB | Output is correct |
7 | Correct | 132 ms | 22088 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 1 ms | 336 KB | Output is correct |
5 | Correct | 1 ms | 336 KB | Output is correct |
6 | Correct | 6 ms | 1360 KB | Output is correct |
7 | Correct | 132 ms | 22088 KB | Output is correct |
8 | Correct | 1 ms | 336 KB | Output is correct |
9 | Correct | 1 ms | 336 KB | Output is correct |
10 | Correct | 1 ms | 336 KB | Output is correct |
11 | Correct | 1 ms | 336 KB | Output is correct |
12 | Correct | 6 ms | 1360 KB | Output is correct |
13 | Correct | 133 ms | 22068 KB | Output is correct |
14 | Incorrect | 1 ms | 336 KB | Answer gives possible 1 while actual possible 0 |
15 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 1 ms | 336 KB | Output is correct |
5 | Correct | 1 ms | 336 KB | Output is correct |
6 | Correct | 1 ms | 336 KB | Output is correct |
7 | Correct | 1 ms | 336 KB | Output is correct |
8 | Correct | 7 ms | 1360 KB | Output is correct |
9 | Correct | 134 ms | 24152 KB | Output is correct |
10 | Incorrect | 1 ms | 336 KB | Too few ways to get from 0 to 1, should be 2 found 1 |
11 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 36 ms | 6300 KB | Output is correct |
5 | Correct | 141 ms | 24104 KB | Output is correct |
6 | Correct | 131 ms | 24136 KB | Output is correct |
7 | Correct | 165 ms | 24028 KB | Output is correct |
8 | Incorrect | 1 ms | 336 KB | Too few ways to get from 0 to 1, should be 2 found 1 |
9 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 1 ms | 336 KB | Output is correct |
5 | Correct | 1 ms | 336 KB | Output is correct |
6 | Correct | 6 ms | 1360 KB | Output is correct |
7 | Correct | 132 ms | 22088 KB | Output is correct |
8 | Correct | 1 ms | 336 KB | Output is correct |
9 | Correct | 1 ms | 336 KB | Output is correct |
10 | Correct | 1 ms | 336 KB | Output is correct |
11 | Correct | 1 ms | 336 KB | Output is correct |
12 | Correct | 6 ms | 1360 KB | Output is correct |
13 | Correct | 133 ms | 22068 KB | Output is correct |
14 | Incorrect | 1 ms | 336 KB | Answer gives possible 1 while actual possible 0 |
15 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 336 KB | Output is correct |
2 | Correct | 1 ms | 336 KB | Output is correct |
3 | Correct | 1 ms | 336 KB | Output is correct |
4 | Correct | 1 ms | 336 KB | Output is correct |
5 | Correct | 1 ms | 336 KB | Output is correct |
6 | Correct | 6 ms | 1360 KB | Output is correct |
7 | Correct | 132 ms | 22088 KB | Output is correct |
8 | Correct | 1 ms | 336 KB | Output is correct |
9 | Correct | 1 ms | 336 KB | Output is correct |
10 | Correct | 1 ms | 336 KB | Output is correct |
11 | Correct | 1 ms | 336 KB | Output is correct |
12 | Correct | 6 ms | 1360 KB | Output is correct |
13 | Correct | 133 ms | 22068 KB | Output is correct |
14 | Incorrect | 1 ms | 336 KB | Answer gives possible 1 while actual possible 0 |
15 | Halted | 0 ms | 0 KB | - |