Pagini recente » Cod sursa (job #2402574) | Profil Cryshana | Rating Vasile Flavius (MrFinn12) | Cod sursa (job #107675) | Cod sursa (job #2981750)
#include <bits/stdc++.h>
using namespace std;
vector <pair<int, int>> v[256];
double coef[256][257];
int main()
{
freopen("tunel.in", "r", stdin);
freopen("tunel.out", "w", stdout);
int n, m, a, b, c;
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
cin >> a >> b >> c;
v[a].push_back({b, c});
v[b].push_back({a, c});
}
for(int i = 1; i < n; i++)
{
///rasp[i] * v[i].size() = suma(rasp[it.first] + it.second)
coef[i][i] = v[i].size();
for(auto it:v[i])
{
coef[i][it.first] = -1;
coef[i][n + 1] += it.second;
}
}
coef[n][n] = 1;
///gauss
for(int i = 1; i <= n; i++)
{
for(int j = i; j <= n; j++)
if(coef[j][i] != 0)
{
for(int k = 1; k <= n + 1; k++)
swap(coef[j][k], coef[i][k]);
break;
}
for(int j = i + 1; j <= n + 1; j++)
coef[i][j] /= coef[i][i];
coef[i][i] = 1;
for(int j = 1; j <= n; j++)
if(j != i)
{
for(int k = 1; k <= n + 1; k++)
if(k != i)
coef[j][k] -= coef[j][i] * coef[i][k];
coef[j][i] = 0;
}
}
cout << fixed << setprecision(3) << coef[1][n + 1];
return 0;
}