Pagini recente » Cod sursa (job #832430) | Cod sursa (job #34088) | Cod sursa (job #1734470) | Cod sursa (job #2131308) | Cod sursa (job #1210891)
#include <cstdio>
#include <algorithm>
using namespace std;
#define eps 0.000001
FILE *f=fopen("tunel.in","r");
FILE *g=fopen("tunel.out","w");
double v[260][260];
int main(){
int n,m,x,y,z,i,j,k,l;
double p;
fscanf (f,"%d%d",&n,&m);
for (i=1;i<=m;++i){
fscanf (f,"%d%d%d",&x,&y,&z);
v[x][x]--;
v[y][y]--;
v[x][n+1]+=z;
v[y][n+1]+=z;
v[x][y]++;
v[y][x]++;
}
for (i=1;i<=n+1;++i) v[n][i]=0;
v[n][n]=1;
for (i=n,j=n;j>=1;--i,--j){
for (k=i; k>=1 && v[k][j]<eps && v[k][j]>-eps ;--k);
if (k<1){
j--;
continue;
}
if (i!=k)
for (l=1;l<=n+1;++l) swap(v[i][l],v[k][l]);
for (k=i-1;k>=1;--k){
if(v[k][j]>eps || v[k][j]<-eps){
p=v[k][j]/v[i][j];
for(l=1;l<=n+1;++l) v[k][l]-=p*v[i][l];
}
}
}
fprintf (g,"%.8lf",-v[i+1][n+1]/v[i+1][1]);
return 0;
}