Cod sursa(job #2798343)

Utilizator bem.andreiIceman bem.andrei Data 11 noiembrie 2021 10:36:51
Problema Tunelul groazei Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;
ifstream r("tunel.in");
ofstream w("tunel.out");
int n, m;
double g[303][303];
void scadere(int a, int b, double t){
    for(int i=1;i<=n;i++){
        g[a][i]-=t*g[b][i];
    }
}
void gauss(){
    double x;
    for(int i=1;i<n;i++){
        x=g[i][i];
        for(int j=1;j<=n;j++){
            g[i][j]/=x;
        }
        for(int j=1;j<=n;j++){
            if(j!=i){
                scadere(j, i, g[j][i]);
            }
        }
    }
}
void push(int a, int b, int t){
    if(a==n){
        return;
    }
    g[a][a]++;
    g[a][n]+=t;
    if(b!=n){
        g[a][b]--;
    }
}
int main()
{
    r>>n>>m;
    for(int i=0;i<m;i++){
        int x, y, t;
        r>>x>>y>>t;
        push(x, y, t);
        push(y, x, t);
    }
    gauss();
    w<<fixed<<setprecision(3)<<g[1][n];
    return 0;
}