제출 #1079873

#제출 시각아이디문제언어결과실행 시간메모리
1079873LIFStranded Far From Home (BOI22_island)C++14
0 / 100
358 ms56260 KiB
#include<bits/stdc++.h> using namespace std; int n,m,cnt = 0; int a[500005],head[500005]; int x[500005]; int y[500005]; vector<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); } } 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]]) { map<int,bool> used; for(auto toid : vv[nowid]) { if(a[toid] <= a[nowid]) { if(find(toid) == find(nowid))continue; if(used[find(toid)] == false) { siz[nowid] += siz[find(toid)]; used[find(toid)] = true; } f[find(toid)] = find(nowid); add(nowid,toid); } } if(siz[find(nowid)] < val[i+1])tag[nowid] = -1; } } 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; }

컴파일 시 표준 에러 (stderr) 메시지

island.cpp: In function 'int main()':
island.cpp:59:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0;i<val.size()-1;i++)
      |                 ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...