Pagini recente » Cod sursa (job #1662692) | Cod sursa (job #284310) | Cod sursa (job #561295) | Cod sursa (job #1202394) | Cod sursa (job #484418)
Cod sursa(job #484418)
#include <algorithm>
#include <vector>
using namespace std;
#define pb push_back
#define mp make_pair
#define sc second
#define fs first
#define DIM 260
vector <pair <int,int> > g[DIM];
double bst[DIM][DIM];
int grd[DIM];
int n,m;
void read ()
{
int i,x,y,z;
scanf ("%d%d",&n,&m);
for (i=1; i<=m; ++i)
{
scanf ("%d%d%d",&x,&y,&z);
++grd[x]; ++grd[y];
g[x].pb (mp (y,z));
g[y].pb (mp (x,z));
}
}
void solve ()
{
vector <pair <int,int> > :: iterator it;
double nr1,nr2;
int i,j,k;
for (i=1; i<n; ++i)
for (it=g[i].begin (); it!=g[i].end (); ++it)
{
bst[i][it->fs]+=(double)1/grd[i];
bst[i][0]+=(double)it->sc/grd[i];
}
for (i=2; i<n; ++i)
{
nr1=1-bst[i][i];
for (j=0; j<n; ++j)
bst[i][j]*=(double)1/nr1;
bst[i][i]=0;
for (j=1; j<n; ++j)
{
nr2=bst[j][i];
for (k=0; k<n; ++k)
bst[j][k]+=bst[i][k]*nr2;
bst[j][i]=0;
}
}
printf ("%lf",bst[1][0]/(1-bst[1][1]));
}
int main ()
{
freopen ("tunel.in","r",stdin);
freopen ("tunel.out","w",stdout);
read ();
solve ();
return 0;
}