hoj2047

/*This Code is Submitted by billforum for Problem 4000125 at 2012-02-12 18:42:46*/
#include <stdio.h>
#include <iostream>
#include <memory.h>
using namespace std;

const int N=102;
bool f[N];
int pre[N];
double v[N],p[N][N];
int n,m;

void init()
{
        int p1,p2,pro;
        memset(f,0,sizeof(f));
        memset(v,0,sizeof(f));
        memset(p,0,sizeof(p));
        memset(pre,0,sizeof(pre));
        for(int i=0;i<m;i++)
        {
                cin>>p1>>p2>>pro;
                p[p1][p2]=pro/100.0;
                p[p2][p1]=pro/100.0;
        }
        for(int i=1;i<=n;i++)
        {
                v[i]=p[1][i];
        }
        v[1]=1;
        return;
}

void path()
{
        int k;
        f[1]=1;
        k=1;
        for(int i=2;i<=n;i++)
        {
                double maxd=0;
                for(int j=2;j<=n;j++)
                {
                        if(!f[j])
                        {
                                if(v[j]>maxd)
                                {
                                        maxd=v[j];
                                        k=j;
                                }
                        }
                }//for
                f[k]=1;
                for(int t=2;t<=n;t++)
                {
                        if((!f[t])&&(v[k]*p[k][t]>v[t]))
                        {
                v[t]=v[k]*p[k][t];
                pre[t]=k;
            }
                }
                
        }
        
        
        return;
}
int main(int argc, char **argv)
{
        while(cin>>n)
        {
                if(n==0) break;
                cin>>m;
                init();
                path();
                v[n]=v[n]*100;
                printf("%.6lf percent\n",v[n]);
        }
        return 0;
}

 

posted @ 2012-02-12 19:04  wuzhibin  阅读(166)  评论(0)    收藏  举报