Cod sursa(job #1390259)

Utilizator AlexTAlexandru AlexT Data 16 martie 2015 22:22:23
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <cstdlib>
using namespace std;

int main()
{
int j,i,n,m,**a,b,c,x,y,d,k;
ifstream f("sate.in");
ofstream g("sate.out");
f>>n>>m>>b>>c;

//alocarea memoriei
cout<<n<<" "<<m<<" "<<b<<" "<<c<<endl;
a=(int**)malloc(n*sizeof(int*)+1);
for(i=1;i<=n;i++)
    {
    a[i]=(int*)malloc(n*sizeof(int)+1);
    }

//initializarea
for(i=1;i<=n;i++)
    {
    for(j=1;j<=n;j++)
        {
        a[i][j]=-1;
        }
    }

//citirea
for(i=0;i<m;i++)
    {
    f>>x>>y>>d;
    a[y][x]=d;
    a[x][y]=d;
    //cout<<a[y][x]<<endl;
    }

while(a[c][b]==-1)
    {
    for(i=1;i<=n;i++)
        {
        for(k=1;k<n;k++)
            {
            if(a[i][k]!=-1)
                {
                for(j=k+1;j<=n;j++)
                    {
                    if(a[i][j]!=-1)
                        {
                        if(k>i)
                            {
                            a[k][j]=a[j][k]=a[i][j]-a[i][k];
                            }
                        if(j<i)
                            {
                            a[k][j]=a[j][k]=a[i][k]-a[i][j];
                            }
                        if((j>i)&&(k<i))
                            {
                            a[k][j]=a[j][k]=a[i][j]+a[i][k];
                            }
                        }
                    }
                }
            }
        }
    }
g<<a[b][c]<<endl;
for(i=1;i<n;i++)
    {
    free(a[i]);
    }
free(a);
    return 0;
}