Submission #393708

# Submission time Handle Problem Language Result Execution time Memory
393708 2021-04-24T11:02:17 Z sad Paint (COI20_paint) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
using namespace std;
int n,m;
const int N=2000090;
vector<int>a[N],vis[N];
vector<int>v[N];
int pa[N],num[N][N],co[N];
int get (int x)
{
    if(pa[x]==x)return x;
    return pa[x]=get(pa[x]);
}
void merge(int x,int y)
{
    x=get(x);
    y=get(y);
    if(x==y)return;
    for(auto it:v[y])
    {
        int o=get(it);
        if(o==x)continue;
        v[x].pb(o);
    }
    v[y].clear();
    pa[y]=x;
}
int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<n+3;i++)
    {
        for(int j=0;j<m+3;j++)
        {
            a[i].pb(-1);
        }
    }
    int r=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<m+1;j++)
        {
            num[i][j]=++r;
            cin>>a[i][j];
            co[num[i][j]]=a[i][j];
            pa[num[i][j]]=num[i][j];
            int u=num[i][j];
            if(i>1)
            {
                v[u].pb(num[i-1][j]);
                v[num[i-1][j]].pb(u);
                if(a[i][j]==a[i-1][j])
                {
                    merge(u,num[i-1][j]);
                }
            }
            if(j>1)
            {
                v[u].pb(num[i][j-1]);
                v[num[i][j-1]].pb(u);
                if(a[i][j]==a[i][j-1])
                {
                    merge(u,num[i][j-1]);
                }
            }
        }
    }

    int q;cin>>q;
    while(q--)
    {
        int x,y,c;
        cin>>x>>y>>c;
        int u=num[x][y];
        if(c==co[u])continue;
        co[u]=1-co[u];
        u=get(u);
        for(auto it:v[u])
        {
            merge(it,u);
        }
    }
    for(int i=1;i<n+1;i++)
    {
        for(int j=1;j<m+1;j++)cout<<co[get(num[i][j])]<<" ";
        cout<<endl;
    }

}

Compilation message

/usr/bin/ld: failed to convert GOTPCREL relocation; relink with --no-relax
collect2: error: ld returned 1 exit status