Cod sursa(job #1799019)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 5 noiembrie 2016 17:48:39
Problema Tunelul groazei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define MAXN 300
using namespace std;
ifstream f("tunel.in");
ofstream g("tunel.out");
int n, m;
double v[MAXN][MAXN];
void reduce(int x, int y, double c) {
    for (int i = 1; i <= n; ++i) v[x][i] -= c * v[y][i];
}
void gauss() {
    int i, j;
    double x;
    for (i = 1; i < n; ++i) {
        x = v[i][i];
        for (j = 1; j <= n; ++j) v[i][j] /= x;
        for (j = 1; j <= n; ++j)
            if (j != i) reduce (j, i, v[j][i]);
    }
}
void add(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 i, x, y, c;
    f>> n >> m;
    for (i = 1; i <= m; ++i) {
        f>> x >> y >> c;
        add(x, y, c);
        add(y, x, c);
    }
    gauss();
    g<<fixed<<setprecision(3)<<v[1][n];
    return 0;
}