Pagini recente » Cod sursa (job #1956430) | Cod sursa (job #2063514) | Cod sursa (job #843784) | Cod sursa (job #1684809) | Cod sursa (job #1533741)
#include <cstdio>
#include <algorithm>
using namespace std;
const int nmax = 260;
int n, m, gr[nmax];
double a[nmax][nmax], val[nmax];
int main()
{
freopen("tunel.in","r",stdin);
freopen("tunel.out","w",stdout);
scanf("%d %d", &n, &m);
int i, j, x, y, c, k;
double t;
for (i=1; i<=m; i++)
{
scanf("%d %d %d", &x, &y, &c);
gr[x]++;
gr[y]++;
a[x][y]++;
a[y][x]++;
a[x][n+1]-=c;
a[y][n+1]-=c;
}
for (i=1; i<=n; i++)
for (j=1; j<=n+1; j++) a[i][j]/=gr[i];
for (i=1; i<n; i++)
{
a[i][n]=0;
a[i][i]=-1;
}
for (j=1; j<n; j++)
{
for (i=j; i<=n; i++)
if (a[i][j]) break;
if (i!=j)
for (k=1; k<=n+1; k++)
swap(a[i][k], a[j][k]);
for (i=j+1; i<=n+1; i++) a[j][i]/=a[j][j];
a[j][j]=1;
for (i=j+1; i<n; i++)
{
for (k=j+1; k<=n+1; k++)
a[i][k]-=a[i][j]*a[j][k];
a[i][j]=0;
}
}
for (i=n-1; i>0; i--)
for (j=1; j<=n+1; j++)
if (a[i][j])
{
val[j]=a[i][n+1];
for (k=j+1; k<=n; k++)
val[j]-=val[k]*a[i][k];
break;
}
printf("%.4lf\n",val[1]);
}