Cod sursa(job #981570)

Utilizator stefanzzzStefan Popa stefanzzz Data 7 august 2013 15:45:51
Problema Tunelul groazei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <vector>
#include <iomanip>
#define MAXN 260
#define EPS 0.0000001
#define ABS(p) ((p>0)?(p):(-p))
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]=1;}
    for(i=1;i<=n+1;i++)
        ec[n][i]=0;
    ec[n][n]=1;
    for(i=1,j=n;j>=1;j--,i++){
        for(k=i;ABS(ec[k][j])<EPS;k++);
        x=ec[k][j];
        for(ii=1;ii<=n+1;ii++){
            aux=ec[i][ii];
            ec[i][ii]=ec[k][ii]/x;
            ec[k][ii]=aux;}
        for(k=i+1;k<=n;k++)
            if(ABS(ec[k][j])>EPS){
                x=-ec[k][j];
                for(ii=1;ii<=n+1;ii++)
                    ec[k][ii]+=x*ec[i][ii];}}
    g<<fixed<<setprecision(5)<<-ec[n][n+1]<<'\n';
    f.close();
    g.close();
    return 0;
}