Pagini recente » Cod sursa (job #36217) | Cod sursa (job #1038257) | Cod sursa (job #3220949) | Cod sursa (job #1595285) | Cod sursa (job #1249628)
#include<cstdio>
#include<vector>
using namespace std;
int N, M;
double eps, A[260][260];
vector < pair < int , int > > v[260];
int main()
{
freopen ("tunel.in", "r", stdin);
freopen ("tunel.out", "w", stdout);
scanf ("%d %d", &N, &M);
for (int i=1; i<=M; i++)
{
int X, Y, Z;
scanf ("%d %d %d", &X, &Y, &Z);
v [ X ] . push_back ( make_pair (Y, Z) );
v [ Y ] . push_back ( make_pair (X, Z) );
}
for (int i=1; i<=N; i++)
for (int j=1; j<=N+1; j++)
A[i][j] = 0.0;
for (int i=1; i<N; i++)
{
int p = v[i].size();
A[i][i] = 1.0;
for (vector < pair < int , int > > :: iterator it = v[i].begin(); it != v[i].end(); it++)
A[i][it->first] -= (double) 1 / p, A[i][N+1] += (double) it->second / p;
}
A[N][N] = 1.0;
A[N][N+1] = 0.0;
for (int i=1; i<=N; i++)
{
int p = 0;
for (int j = 1; j <= N + 1; j++)
if ( A[i][j] )
{
p = j;
break;
}
if (p == 0) continue;
for (int j=1; j<=N; j++)
if ( i != j && A[j][p] )
{
/////int multesc pe i cu A[j][p]/A[i][p] si il scad
double rap = A[j][p] / A[i][p];
for (int k = 1; k <= N + 1; k++)
A[j][k] = (double) A[j][k] - A[i][k] * rap;
}
}
printf ("%.4lf\n", (double)A[1][N+1] / A[1][1]);
return 0;
}