Cod sursa(job #2119724)

Utilizator andreistanStan Andrei andreistan Data 1 februarie 2018 16:27:39
Problema Tunelul groazei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("tunel.in");
ofstream g("tunel.out");

int N,M;
double X[256];
double A[256][257];

void gauss()
{
    for(int i = 1; i < N; i++)
    {
        for(int j = i + 1; j <= N + 1; j++)
            A[i][j] /= A[i][i];
        A[i][i] = 1;
        for(int j = i + 1; j < N; j++)
        {
            for(int k = i + 1; k <= N + 1; k++)
                A[j][k] -= A[j][i] * A[i][k];
            A[j][i] = 0;
        }
    }
}

void solutie()
{
    for(int i=N-1;i>=1;i--)
    {
        X[i]=A[i][N+1];
        for(int j=i+1;j<N;j++)
                X[i]-=X[j]*A[i][j];
    }
}

int main()
{
    int a,b,c;
    f>>N>>M;
    while(M--)
    {
        f>>a>>b>>c;
        A[a][a]++;
        A[b][b]++;
        A[a][b]--;
        A[b][a]--;
        A[a][N+1]+=c;
        A[b][N+1]+=c;
    }
    gauss();
    solutie();
    g<<fixed<<setprecision(3)<<X[1];
    return 0;
}