Pagini recente » Cod sursa (job #2592147) | Cod sursa (job #2273449) | Cod sursa (job #1738052) | Cod sursa (job #554941) | Cod sursa (job #638882)
Cod sursa(job #638882)
#include <stdio.h>
#define NMAX 301
int n,m,cnt[NMAX][NMAX],grd[NMAX],cost[NMAX][NMAX];
double B[NMAX][NMAX],rez[NMAX];
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 val;
for (i=1; i<=m; i++)
{
scanf("%d%d%d",&x,&y,&z);
grd[x]++; grd[y]++;
cnt[x][y]++; cnt[y][x]++;
cost[x][y]+=z; cost[y][x]+=z;
}
for (i=1; i<n; i++)
{
B[i][i]=grd[i];
for (j=1; j<n; j++)
if (cost[i][j])
{
B[i][j]=-cnt[i][j];
B[i][n]+=cost[i][j];
}
B[i][n]+=cost[i][n];
for (j=1; j<=n; j++)
B[i][j]/=grd[i];
}
for (i=1; i<n; i++)
{
for (j=i+1; j<n; j++)
{
val=B[j][i]/B[i][i];
for (k=i; k<=n; k++)
B[j][k]-=val*B[i][k];
}
}
for (i=n-1; i>=1; i--)
{
rez[i]=B[i][n];
for (j=i+1; j<n; j++)
rez[i]-=B[i][j]*rez[j];
rez[i]/=B[i][i];
}
printf("%lf\n",rez[1]);
return 0;
}