Cod sursa(job #981924)

Utilizator stefanzzzStefan Popa stefanzzz Data 8 august 2013 10:07:13
Problema Tunelul groazei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>
#include <iomanip>
#define MAXN 260
#define EPS 0.000001
using namespace std;
ifstream f("tunel.in");
ofstream g("tunel.out");

int n,m,a,b,c;
double ec[MAXN][MAXN],aux,x;

int main()
{
    int i,j,k,ii;
    f>>n>>m;
    for(i=1;i<=m;i++){
        f>>a>>b>>c;
        ec[a][a]--;
        ec[b][b]--;
        ec[a][n+1]+=c;
        ec[b][n+1]+=c;
        ec[a][b]++;
        ec[b][a]++;}
    for(i=1;i<=n+1;i++)
        ec[n][i]=0;
    ec[n][n]=1;
    for(i=n,j=n;j>=1;j--,i--){
        for(k=i;k>=1&&ec[k][j]<EPS&&ec[k][j]>(-EPS);k--);
        if(k<1){
            j--;
            continue;}
        x=ec[k][j];
        for(ii=1;ii<=n+1;ii++){
            aux=ec[i][ii];
            ec[i][ii]=ec[k][ii];
            ec[k][ii]=aux;}
        for(k=i-1;k>=1;k--)
            if(ec[k][j]>EPS||ec[k][j]<-EPS){
                x=-ec[k][j]/ec[i][j];
                for(ii=1;ii<=n+1;ii++)
                    ec[k][ii]+=x*ec[i][ii];}}
    g<<fixed<<setprecision(8)<<-ec[i+1][n+1]/ec[i+1][1]<<'\n';
    f.close();
    g.close();
    return 0;
}