Pagini recente » Cod sursa (job #619161) | Cod sursa (job #2438128) | Cod sursa (job #23063) | Cod sursa (job #19577) | Cod sursa (job #352975)
Cod sursa(job #352975)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
#define file_in "tunel.in"
#define file_out "tunel.out"
#define Nmax 300
#define pb push_back
#define mp make_pair
#define f first
#define s second
#define eps 0.001
int N,M;
//vector< pair<int, int > > V[Nmax];
double D[Nmax][Nmax];
double grad[Nmax];
int main()
{
int i,j,k;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d",&N, &M);
int x,y,c;
for (i=1;i<=M;++i)
{
scanf("%d %d %d", &x, &y, &c);
grad[x]++;
grad[y]++;
D[x][y]++;
D[y][x]++;
D[x][0]+=c;
D[y][0]+=c;
}
for (i=1;i<N;++i)
for(j=0;j<N;++j)
D[i][j]*=(1.0/grad[i]);
double grd;
for (i=2;i<N;++i)
for (j=1;j<N;++j)
{
//D[i][j]=double(1.0/D[i][i]);
for (k=0;k<N;++k)
if (i!=k && i!=j && j!=k)
{
grd=(double)(1.0*(double)(1.0/(double)(1.0-D[i][i])));
D[j][k]=D[j][k]+D[i][k]*D[j][i]*grd;
}
}
printf("%.5lf", (double)(1.0*(double)(1.0/(double)(1.0-D[1][1]))*D[1][0]));
fclose(stdin);
fclose(stdout);
return 0;
}