Pagini recente » Cod sursa (job #2608832) | Cod sursa (job #1793522) | Cod sursa (job #2289578) | Cod sursa (job #6536) | Cod sursa (job #328028)
Cod sursa(job #328028)
#include<stdio.h>
#include<math.h>
#define N 50
#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;
}