Cod sursa(job #2120658)

Utilizator topala.andreiTopala Andrei topala.andrei Data 2 februarie 2018 19:01:52
Problema Tunelul groazei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
ifstream f("tunel.in");
ofstream g("tunel.out");
const int maxn = 257;

int N, M;
double A[maxn][maxn], X[maxn];

void gauss()
{
    int i, j, k;
    for(i = 1; i < N; i++)
    {
        for(j = i + 1; j <= N + 1; j++)
            A[i][j] /= A[i][i];
        A[i][i] = 1;
        for(j = i + 1; j < N; j++)
        {
            for(k = i + 1; k <= N + 1; k++)
                A[j][k] -= A[j][i] * A[i][k];
            A[j][i] = 0;
        }
    }
}
void solutie()
{
    int i, j;
    for(i = N - 1; i >= 1; i--)
    {
        X[i] = A[i][N + 1];
        for(j = i + 1; j < N; j++)
            X[i] -= X[j] * A[i][j];
    }
}
int main()
{
    int a, b, c;
    f >> N >> M;
    for(int i = 1; i <= M; i++)
    {
        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];
}