# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1079924 | 2024-08-29T03:33:23 Z | LIF | Stranded Far From Home (BOI22_island) | C++14 | 1000 ms | 51524 KB |
#include<bits/stdc++.h> using namespace std; int n,m,cnt = 0; long long int a[500005],head[500005]; int x[500005]; int y[500005]; vector<long long int> val; map<int,vector<int> > mp; int f[500005]; vector<int> vv[500005]; long long int siz[500005]; int tag[500005]; int find(int x) { if(f[x] == x)return x; return f[x] = find(f[x]); } struct e { int to; int next; }edge[500005]; void add(int x,int y) { cnt++; edge[cnt].to = y; edge[cnt].next = head[x]; head[x] = cnt; } void dfs(int now,int fa,int tg) { tag[now] = tg; for(int i=head[now];i!=0;i=edge[i].next) { int to = edge[i].to; if(to == fa)continue; if(tag[to] == -1 || tg == -1)dfs(to,now,-1); else dfs(to,now,1); } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; if(mp[a[i]].size() == 0)val.push_back(a[i]); mp[a[i]].push_back(i); tag[i] = 1; } for(int i=1;i<=n;i++)siz[i] = a[i]; for(int i=1;i<=n;i++)f[i] = i; for(int i=1;i<=m;i++) { cin>>x[i]>>y[i]; vv[x[i]].push_back(y[i]);vv[y[i]].push_back(x[i]); } sort(val.begin(),val.end()); val.push_back(-1); for(int i=0;i<val.size()-1;i++) { for(auto nowid : mp[val[i]]) { for(auto toid : vv[nowid]) { if(a[toid] <= a[nowid]) { if(find(toid) == find(nowid))continue; if(val[i] > siz[find(toid)]) { tag[find(toid)] = -1; // cout<<"fail"<<endl; // cout<<val[i]<<" "<<toid<<" "<<siz[toid]<<endl; } siz[find(nowid)] += siz[find(toid)]; f[find(toid)] = find(nowid); add(find(nowid),find(toid)); // cout<<"yeah"<<endl; // cout<<nowid<<" "<<toid<<endl; } } } } // for(int i=1;i<=n;i++)cout<<tag[i]; // cout<<endl; int fir = find(1); dfs(fir,0,1); for(int i=1;i<=n;i++) { if(tag[i] == -1)cout<<"0"; else cout<<"1"; } cout<<endl; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 12120 KB | Output is correct |
2 | Correct | 6 ms | 12120 KB | Output is correct |
3 | Correct | 7 ms | 12124 KB | Output is correct |
4 | Incorrect | 7 ms | 12380 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 12120 KB | Output is correct |
2 | Correct | 5 ms | 12376 KB | Output is correct |
3 | Correct | 267 ms | 51524 KB | Output is correct |
4 | Execution timed out | 1038 ms | 27084 KB | Time limit exceeded |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 12124 KB | Output is correct |
2 | Incorrect | 361 ms | 51132 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 7 ms | 12124 KB | Output is correct |
2 | Incorrect | 186 ms | 28836 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 12120 KB | Output is correct |
2 | Correct | 6 ms | 12120 KB | Output is correct |
3 | Correct | 7 ms | 12124 KB | Output is correct |
4 | Incorrect | 7 ms | 12380 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |