Pagini recente » Cod sursa (job #512464) | Cod sursa (job #242476) | Cod sursa (job #1548968) | Cod sursa (job #2302046) | Cod sursa (job #109863)
Cod sursa(job #109863)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define Nmax 256
#define Tmax 4096
#define pb push_back
#define sz(a) (int)((a).size())
#define mp make_pair
#define x first
#define y second
const double eps = 10e-8;
int n, m;
vector<pair<int, int> > lv[Nmax];
double d[Tmax][Nmax], sol, done;
int gr[Nmax];
void citire()
{
int i, a, b, c;
scanf("%d %d\n", &n, &m);
for (i = 1; i <= m; ++i)
{
scanf("%d %d %d\n", &a, &b, &c);
lv[a].pb(mp(b, c));
lv[b].pb(mp(a, c));
++gr[a], ++gr[b];
}
}
void solve()
{
int i, j, k;
d[0][1] = 1;
for (i = 1; done + eps < 1 && i < Tmax; ++i)
{
for (j = 1; j <= n; ++j)
for (k = 0; k < sz(lv[j]); ++k)
if (lv[j][k].x != n && lv[j][k].y <= i)
d[i][j] += d[i - lv[j][k].y][lv[j][k].x] / gr[lv[j][k].x];
done += d[i][n];
sol += i * d[i][n];
}
printf("%lf\n", sol);
}
int main()
{
freopen("tunel.in", "r", stdin);
freopen("tunel.out", "w", stdout);
citire();
solve();
return 0;
}