Cod sursa(job #708787)

Utilizator mihai995mihai995 mihai995 Data 7 martie 2012 10:48:02
Problema Tunelul groazei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

const int N=261;
double v[N][N];
int n;

ifstream in("tunel.in");
ofstream out("tunel.out");

void reduce(double a[],double b[],double x)
{
    for (int i=1;i<=n;i++)
        a[i]-=b[i]*x;
}

int gauss()
{
    double x;
    for (int i=1;i<n;i++)
    {
        x=v[i][i];
        for (int j=1;j<=n;j++)
            v[i][j]/=x;
        for (int j=1;j<=n;j++)
            if (i!=j)
                reduce(v[j],v[i],v[j][i]);
    }
    return v[1][n];
}

void work(int x,int y,int c)
{
    if (x==n)
        return;
    v[x][x]++;
    v[x][n]+=c;
    if (y!=n)
        v[x][y]--;
}

int main()
{
    int m,x,y,c;
    in>>n>>m;
    while (m--)
    {
        in>>x>>y>>c;
        work(x,y,c);
        work(y,x,c);
    }
    out<<gauss()<<"\n";
    return 0;
}