제출 #1305495

#제출 시각아이디문제언어결과실행 시간메모리
1305495coolboy19521Stranded Far From Home (BOI22_island)C++20
0 / 100
90 ms14680 KiB
#include "bits/stdc++.h"

#define FOR(i,a,b)for(int i=(a);i<(b);i++)
#define F0R(i,a)FOR(i,0,a)
#define ROF(i,a,b)for(int i=(b)-1;i>=(a);i--)
#define R0F(i,a)ROF(i,0,a)
#define REP(a)F0R(_,a)

using namespace std;

const int mxn=2e5+20;

vector<int> aj[mxn];
bool mark[mxn];
int s[mxn];

struct{
	long long val[mxn];
	int ar[mxn];
	void init(int n){
		fill_n(ar,n,-1);
		memcpy(val,s,sizeof(val));
	}
	int find(int u){
		if(ar[u]<0)return u;
		else return ar[u]=find(ar[u]);
	}
	void unite(int u,int v){
		v=find(v);
		if(s[u]>val[v]){
			mark[v]=true;
			return;
		}
		u=find(u);
		if(u==v)return;
		if(ar[u]>ar[v])swap(u,v);
		val[u]+=val[v],ar[u]+=ar[v],ar[v]=u;
	}
}DSU;

int main(){
	cin.tie(nullptr)->sync_with_stdio(false);
	int n,m;cin>>n>>m;
	F0R(i,n)cin>>s[i];
	DSU.init(n);
	REP(m){
		int a,b;cin>>a>>b;
		a--,b--;
		if(s[a]<s[b])swap(a,b);
		aj[a].push_back(b);
	}
	vector<pair<int,int>>vp;
	F0R(i,n)vp.emplace_back(s[i],i);
	sort(begin(vp),end(vp));
	for(auto&pr:vp){
		int w=pr.first,u=pr.second;
		for(int v:aj[u])DSU.unite(u,v);
	}
	F0R(i,n)cout<<(mark[DSU.find(i)]?0:1);cout<<'\n';
}

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

In file included from /usr/include/string.h:548,
                 from /usr/include/c++/13/cstring:42,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:121,
                 from island.cpp:1:
In function 'void* memcpy(void*, const void*, size_t)',
    inlined from 'void<unnamed struct>::init(int)' at island.cpp:22:9,
    inlined from 'int main()' at island.cpp:45:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:33: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' reading 1600160 bytes from a region of size 800080 [-Wstringop-overread]
   29 |   return __builtin___memcpy_chk (__dest, __src, __len,
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
   30 |                                  __glibc_objsize0 (__dest));
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
island.cpp: In function 'int main()':
island.cpp:15:5: note: source object 's' of size 800080
   15 | int s[mxn];
      |     ^
#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...