Submission #1323093

#TimeUsernameProblemLanguageResultExecution timeMemory
1323093simona1230Stranded Far From Home (BOI22_island)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;

long long n,m;
pair<long long,long long> a[200001];
vector<long long> v[200001];
long long b[200001];
void read()
{
    cin>>n>>m;
    for(long long i=1;i<=n;i++)
    {
        cin>>a[i].first;
        a[i].second=i;
        b[i]=a[i].first;
    }

    for(long long i=1;i<=m;i++)
    {
        long long x,y;
        cin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
}

long long p[200001];
int maxx[200001];
int sz2[200001];

long long f(long long i)
{
    if(p[i]==i)return i;
    return f(p[i]);
}

vector<long long> g[200001];
long long in[200001];

void unite(long long i,long long j)
{
    i=f(i);
    j=f(j);
    if(i==j)return;

    g[maxx[i]].push_back(maxx[j]);
    in[maxx[j]]++;
    maxx[i]=maxx[j]=v1;

    //if(sz2[i]<sz2[j])swap(i,j);

    sz2[i]+=sz2[j];
    p[j]=p[i];
}

void solve()
{
    for(long long i=1;i<=n;i++)
        p[i]=i,maxx[i]=i,sz2[i]=1;
    sort(a+1,a+n+1);
    for(long long h=1;h<=n;h++)
    {
        long long i=a[h].second;
        for(long long j=0;j<v[i].size();j++)
        {
            long long nb=v[i][j];
            //cout<<i<<" ++ "<<nb<<endl;
            if(b[nb]<=b[i])unite(i,nb);
        }
    }
}

long long sz[200001];
void dfs(long long i)
{
    sz[i]=b[i];
    for(long long j=0;j<g[i].size();j++)
    {
        long long nb=g[i][j];
        dfs(nb);
        sz[i]+=sz[nb];
    }
}

long long ans[200001];

void dfsans(long long i)
{
    for(long long j=0;j<g[i].size();j++)
    {
        long long nb=g[i][j];
        if(sz[nb]>=b[i])
        {
            ans[nb]=1;
            dfsans(nb);
        }
    }
}

int main()
{
    read();
    solve();
    long long ver;
    for(long long i=1;i<=n;i++)
    {
        //cout<<in[i]<<" ";
        if(in[i]==0)
        {
            ver=i;
        }
    }
    //cout<<endl;

    //cout<<"! "<<ver<<endl;

    dfs(ver);
    ans[ver]=1;
    dfsans(ver);

    for(long long i=1;i<=n;i++)
        cout<<ans[i];
    cout<<endl;

    return 0;
}
/*
10 11
2 2 4 5 1 3 1 1 1 1
1 2
2 3
1 3
1 4
3 4
3 6
6 7
3 5
5 8
5 9
5 10
*/

Compilation message (stderr)

island.cpp: In function 'void unite(long long int, long long int)':
island.cpp:48:21: error: 'v1' was not declared in this scope; did you mean '__pstl::execution::v1'?
   48 |     maxx[i]=maxx[j]=v1;
      |                     ^~
      |                     __pstl::execution::v1
In file included from /usr/include/c++/13/pstl/glue_algorithm_defs.h:15,
                 from /usr/include/c++/13/algorithm:73,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from island.cpp:1:
/usr/include/c++/13/pstl/execution_defs.h:19:18: note: '__pstl::execution::v1' declared here
   19 | inline namespace v1
      |                  ^~