Pagini recente » Cod sursa (job #2702016) | Cod sursa (job #2094223) | Cod sursa (job #1845117) | Cod sursa (job #2137344) | Cod sursa (job #328034)
Cod sursa(job #328034)
#include<stdio.h>
#include<math.h>
#define N 200
#define eps 0.0000001
int n,m;
double a[N][N];
int b[N][N],v[N],g[N];
int main()
{
freopen("tunel.in","r",stdin);
freopen("tunel.out","w",stdout);
scanf("%d %d",&n,&m);
int i,j,k,x,y,z;
double aux;
for(i=1;i<=m;i++)
{
scanf("%d %d %d ",&x,&y,&z);
v[x]+=z,v[y]+=z;
b[x][y]++,b[y][x]++;
g[x]++,g[y]++;
}
for(i=1;i<=n;i++)
if(g[i])
{
for(j=1;j<=n;j++)
a[i][j]=1.0*b[i][j]/g[i];
a[i][i]-=1;
a[i][n]=1.0*v[i]/g[i];
a[i][n]*=-1;
}
for(i=1;i<n;i++)
{
if(fabs(a[i][i])<eps)
for(j=i+1;j<n;j++)
if(fabs(a[j][i])>eps)
for(k=1;k<=n;k++) aux=a[i][k], a[i][k]=a[j][k], a[j][k]=aux;
aux=1/a[i][i];
for(j=1;j<=n;j++)
a[i][j]*=aux;
for(j=1;j<n;j++)
if(i!=j)
{
aux=a[j][i];
for(k=i;k<=n;k++)
a[j][k]=a[j][k]*a[i][i]-aux*a[i][k];
}
}
printf("%lf\n",1.0*a[1][n]/a[1][1]);
return 0;
}