답안 #723137

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
723137 2023-04-13T09:07:27 Z MurotY Stranded Far From Home (BOI22_island) C++14
10 / 100
460 ms 41980 KB
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("avx,avx2")
#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define ull unsigned long long
#define ff first
#define ss second
#define all(a) a.begin(), a.end()
#define sz size()
using namespace std;
const double pi = 2 * acos(0.0);
const ll N=1e6+7, M=998244353;
vector <ll> g[N];
ll a[N], res[N];
bool u[N];
ll sum[N], ans[N];
ll dfs(int v){
    sum[v]=a[v];
    u[v]=1;
    for (auto l:g[v]){
        if (!u[l]){
            sum[v]+=dfs(l);
        }
    }
    return sum[v];
}

void dfs1(int v, int p){
    if (sum[v] >= a[p] && ans[p] == 1) ans[v]=1;
    u[v]=1;
    for (auto l:g[v]){
        if (!u[l]){
            dfs1(l, v);
        }
    }
    return ;
}
void solve()
{
	int n, m;
	cin >> n >> m;
	
	for (int i=1;i<=n;i++) cin >> a[i];
	for (int i=1;i<=m;i++){
		int x, y;
		cin >> x >> y;
		g[x].push_back(y);
		g[y].push_back(x);
	}
    if (n <= 2000 && m <= 2000){
		for (int i=1;i<=n;i++){
			set <pair <ll, ll>> q;
			vector <int> u(n+5, 0);
			q.insert({0, i});
			ll sum=0, cnt=0;
			while (!q.empty()){
			    pair <ll,ll> mn=*q.begin();
			    if (sum < mn.ff) break;
			    if (u[mn.ss]) continue;
			    u[mn.ss]=1;
			    q.erase(mn);
			    sum+=a[mn.ss];
			    for (auto l:g[mn.ss]){
			        if (!u[l]) {
			            q.insert({a[l], l});
			        }
			    }
			}
			if (q.sz == 0) cout << "1";
			else cout << "0";
		}
		return ;
    }
    ans[1]=1;
    dfs(1);
    fill(u, u+n+5, 0);
    ans[0]=1;
    dfs1(1, 0);
    for (int i=1;i<=n;i++) cout << ans[i] << " ";
    return;
}
int main(){
	ios;
	int t=1;	
//	cin >> t;
	while (t--){ 
	    solve();
	    cout << "\n";
	}
	return 0;
}

Compilation message

island.cpp: In function 'void solve()':
island.cpp:57:14: warning: unused variable 'cnt' [-Wunused-variable]
   57 |    ll sum=0, cnt=0;
      |              ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Correct 14 ms 23764 KB Output is correct
3 Correct 13 ms 23752 KB Output is correct
4 Correct 293 ms 23908 KB Output is correct
5 Correct 275 ms 23900 KB Output is correct
6 Correct 442 ms 23908 KB Output is correct
7 Correct 298 ms 23912 KB Output is correct
8 Correct 220 ms 23900 KB Output is correct
9 Correct 460 ms 23964 KB Output is correct
10 Correct 128 ms 23892 KB Output is correct
11 Correct 119 ms 23892 KB Output is correct
12 Correct 161 ms 23912 KB Output is correct
13 Correct 238 ms 23960 KB Output is correct
14 Correct 155 ms 23900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Correct 15 ms 23764 KB Output is correct
3 Incorrect 150 ms 38896 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 23720 KB Output is correct
2 Incorrect 161 ms 41980 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 23772 KB Output is correct
2 Incorrect 202 ms 36836 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Correct 14 ms 23764 KB Output is correct
3 Correct 13 ms 23752 KB Output is correct
4 Correct 293 ms 23908 KB Output is correct
5 Correct 275 ms 23900 KB Output is correct
6 Correct 442 ms 23908 KB Output is correct
7 Correct 298 ms 23912 KB Output is correct
8 Correct 220 ms 23900 KB Output is correct
9 Correct 460 ms 23964 KB Output is correct
10 Correct 128 ms 23892 KB Output is correct
11 Correct 119 ms 23892 KB Output is correct
12 Correct 161 ms 23912 KB Output is correct
13 Correct 238 ms 23960 KB Output is correct
14 Correct 155 ms 23900 KB Output is correct
15 Correct 13 ms 23764 KB Output is correct
16 Correct 15 ms 23764 KB Output is correct
17 Incorrect 150 ms 38896 KB Output isn't correct
18 Halted 0 ms 0 KB -