Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
纪念一百题,水水的!#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<cmath> using namespace std; int n,m,e; int hed[105],vis[105]; double dis[105]; struct st{ int v,nex; double w; }edge[20005]; void add(int u,int v,double w){ edge[e].v=v,edge[e].w=w,edge[e].nex=hed[u],hed[u]=e++; } double spfa(){ for(int i=1;i<=n;i++)dis[i]=0.0,vis[i]=0;dis[1]=1; priority_queue<pair<double,int> >q; q.push(make_pair(dis[1],1)); while(!q.empty()){ int u = q.top().second;q.pop(); if(vis[u])continue;vis[u]=1; for(int i=hed[u];~i;i=edge[i].nex){ int v = edge[i].v; if(dis[v]<dis[u]*edge[i].w){ dis[v]=dis[u]*edge[i].w; if(!vis[v]) { q.push(make_pair(dis[v],v)); } } } } return dis[n]*100.0; } int main() { while(cin>>n,n){ cin>>m; memset(hed,-1,sizeof(hed)); e=1; while(m--){ int u,v;scanf("%d%d",&u,&v); double w;scanf("%lf",&w); w=w/100.0; add(u,v,w); add(v,u,w); } printf("%.6lf percent\n",spfa()); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator