Submission #1370272

#TimeUsernameProblemLanguageResultExecution timeMemory
1370272eyadoozZoo (COCI19_zoo)C++20
0 / 110
0 ms344 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
#define endl '\n'
#define int long long

int par[2000005]={}, siz[2000005]={};
int cmp=0;
int find(int x) {
    if(par[x]==x) return x;
    return par[x]=find(par[x]);
}
void merge(int x, int y) {
    x=find(x), y=find(y);
    if(x==y) return;
    if(siz[x]>siz[y]) swap(x, y);
    siz[y]+=siz[x];
    par[x]=y;
    cmp--;
}
main()
{
    cin.tie(0) -> sync_with_stdio(0);

    int n, m;
    cin >> n >> m;
    for(int i = 0;i < n*m;i++) par[i]=i, siz[i]=1;
    cmp=n*m;
    string a[n];
    int val[n][m];
    int cnt=0;
    for(int i = 0;i < n;i++) for(int j = 0;j < m;j++) val[i][j]=cnt, cnt++;
    for(auto& i : a) cin >> i;
    assert(a[0][0]==a[n-1][m-1]);
    for(int i = 0;i < n;i++) {
        for(int j = 0;j < m;j++) {
            if(a[i][j]=='*') cmp--;
            if(i+1<n&&a[i][j]==a[i+1][j]&&a[i][j]!='*') merge(val[i][j], val[i+1][j]);
            if(j+1<m&&a[i][j]==a[i][j+1]&&a[i][j]!='*') merge(val[i][j], val[i][j+1]);
        }
    }
    cout << cmp;
}

Compilation message (stderr)

zoo.cpp:28:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   28 | main()
      | ^~~~
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...