Pagini recente » Cod sursa (job #313745) | Cod sursa (job #1277016) | Cod sursa (job #1354493) | Cod sursa (job #3219981) | Cod sursa (job #1083141)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("tunel.in");
ofstream fout("tunel.out");
const int Nmax = 260;
int N, M, NR[Nmax][Nmax], GR[Nmax], CST[Nmax][Nmax];
double SOL[Nmax], A[Nmax][Nmax];
int main()
{
fin >> N >> M;
for(int i = 1; i <= M; i++)
{
int x, y, c;
fin >> x >> y >> c;
NR[x][y]++; NR[y][x]++;
GR[x]++; GR[y]++;
CST[x][y] += c; CST[y][x] += c;
}
for(int i = 1; i < N; i++)
{
A[i][i] = GR[i];
for(int j = 1; j <= N; j++)
if(CST[i][j])
{
if(j != N) A[i][j] -= NR[i][j];
A[i][N] += CST[i][j];
}
for(int j=1; j <= N; j++)
A[i][j] /= GR[i];
}
for(int i=1; i < N; i++)
{
if(A[i][i] != 1)
{
for(int j=i+1; j <= N; j++)
A[i][j] /= A[i][i];
A[i][i] = 1;
}
for(int k = i + 1; k < N; k++)
if(A[k][i] != 0)
{
for(int j = i + 1; j <= N; j++)
A[k][j] -= A[i][j] * A[k][i];
A[k][i] = 0;
}
}
for(int i = N - 1; i; i--)
{
SOL[i] = A[i][N];
for(int j = i + 1; j < N; j++)
SOL[i] -= SOL[j] * A[i][j];
}
fout.precision(5);
fout<<fixed<<SOL[1];
return 0;
}