Cod sursa(job #1436491)

Utilizator Denisa13Stefan Denisa Denisa13 Data 15 mai 2015 22:41:16
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.89 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");

int matrice[22000][22000], nl[22000], nc[22000];

int main()
{
    int ok=0,i,j,n,a,b,c,k,m,x,y,sol=0;
    f>>n>>m>>x>>y;
    for(i=1;i<=m;i++)
    {
        f>>a>>b>>c;
        matrice[a][b]=c;
        nl[a]++;
        nc[b]++;
    }
    while(ok==0)
    {
        for(i=1;i<=n;i++)
        {
            if(i==x && matrice[i][y]!=0)
            {
                sol=matrice[i][y];
                ok=1;
                break;
            }
            else
                if(matrice[x][i]!=0 && matrice[i][y]!=0)
                    {
                        sol=matrice[x][i]+matrice[i][y];
                        ok=1;
                        break;
                    }
        }
        if(ok==0)
        {
            for(i=1;i<=n-1;i++)
                if(nl[i]>=2)
                    for(j=1+i;j<=n-1;j++)
                        if(matrice[i][j]!=0)
                            for(k=j+1;k<=n;k++)
                                if(matrice[i][k]!=0)
                                    {
                                        matrice[j][k]=matrice[i][k]-matrice[i][j];
                                        nl[j]++;
                                        nc[k]++;
                                    }
            for(j=2;j<=n;j++)
                if(nc[j]>=2)
                    for(i=1;i<=j-2;i++)
                        if(matrice[i][j]!=0)
                            for(k=i+1;k<=j-1;k++)
                                if(matrice[k][j]!=0)
                                {
                                    matrice[i][k]=matrice[i][j]-matrice[k][j];
                                    nl[i]++;
                                    nc[k]++;
                                }
            }
    }
    g<<sol;
    return 0;
}