답안 #723114

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
723114 2023-04-13T08:51:17 Z MurotY Stranded Far From Home (BOI22_island) C++14
10 / 100
494 ms 49308 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){
    u[v]=1;
    if (sum[v] >= a[res[v]] && ans[res[v]]) ans[v]=1;
    else{
        if (v != 1) return ;
    }
    for (auto l:g[v]){
        if (!u[l]){
            res[l]=v;
            dfs1(l);
        }
    }
    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);
    dfs1(1);
    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:61:14: warning: unused variable 'cnt' [-Wunused-variable]
   61 |    ll sum=0, cnt=0;
      |              ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 23764 KB Output is correct
2 Correct 14 ms 23764 KB Output is correct
3 Correct 14 ms 23748 KB Output is correct
4 Correct 321 ms 23912 KB Output is correct
5 Correct 273 ms 23904 KB Output is correct
6 Correct 463 ms 23908 KB Output is correct
7 Correct 320 ms 23892 KB Output is correct
8 Correct 238 ms 23916 KB Output is correct
9 Correct 494 ms 23968 KB Output is correct
10 Correct 136 ms 23892 KB Output is correct
11 Correct 126 ms 23892 KB Output is correct
12 Correct 169 ms 23924 KB Output is correct
13 Correct 262 ms 24012 KB Output is correct
14 Correct 162 ms 23896 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Correct 15 ms 23700 KB Output is correct
3 Incorrect 172 ms 42904 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 23892 KB Output is correct
2 Incorrect 177 ms 49308 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Incorrect 238 ms 38956 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 23764 KB Output is correct
2 Correct 14 ms 23764 KB Output is correct
3 Correct 14 ms 23748 KB Output is correct
4 Correct 321 ms 23912 KB Output is correct
5 Correct 273 ms 23904 KB Output is correct
6 Correct 463 ms 23908 KB Output is correct
7 Correct 320 ms 23892 KB Output is correct
8 Correct 238 ms 23916 KB Output is correct
9 Correct 494 ms 23968 KB Output is correct
10 Correct 136 ms 23892 KB Output is correct
11 Correct 126 ms 23892 KB Output is correct
12 Correct 169 ms 23924 KB Output is correct
13 Correct 262 ms 24012 KB Output is correct
14 Correct 162 ms 23896 KB Output is correct
15 Correct 13 ms 23764 KB Output is correct
16 Correct 15 ms 23700 KB Output is correct
17 Incorrect 172 ms 42904 KB Output isn't correct
18 Halted 0 ms 0 KB -