Cod sursa(job #1870840)

Utilizator raduzxstefanescu radu raduzx Data 6 februarie 2017 22:53:37
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.63 kb
#include <fstream>

using namespace std;
ifstream f("bile.in");
ofstream g("bile.out");
bool v[251][251];
int nrmax[63000],t[63000],x[63000],y[63000],cate[63000];
int x0[]={-1,0,1,0},y0[]={0,1,0,-1};
int father(int i)
{
    while(t[i]!=0)
        i=t[i];
    return i;
}
int main()
{
    int maxim,n,i,j,acum,ok;
    f>>n;
    for(i=1;i<=n*n;i++)
    {
        f>>x[i]>>y[i];
    }
    maxim=0;
    int tata,tatact,xt,yt,l,c,racum,opc;
    for(i=n*n;i>=1;i--)
    {
        if(i==2)
            opc=1;
        ok=0;
        v[x[i]][y[i]]=1;
        racum=x[i]*n+y[i];
        acum=racum;
        for(j=0;j<=3;j++)
        {
            l=x[i]+x0[j];
            c=y[i]+y0[j];
            if(v[l][c]==1)
            {
                ok=1;
                tata=father(l*n+c);
                if(t[racum]==0)
                {
                    t[acum]=tata;
                    acum=tata;
                    nrmax[tata]+=1;
                    if(maxim<nrmax[tata])
                        maxim=nrmax[tata];
                }
                else
                {
                    if(acum!=tata)
                    {
                        nrmax[acum]+=nrmax[tata];
                        t[tata]=acum;
                        if(maxim<nrmax[acum])
                            maxim=nrmax[acum];
                    }
                }
            }
        }
        if(ok==0)
        {
            nrmax[acum]=1;
            if(maxim<1)
                maxim=1;
        }
        cate[i]=maxim;
    }
    for(i=2;i<=n*n;i++)
        g<<cate[i]<<'\n';
    g<<"0";
    return 0;
}