poj 2472
#include<iostream>
#include<fstream>
#include<queue>
#include<cmath>
using namespace std;
struct e{
int data;
double w;
e *next;
};
e edge[101];
int n,m;
double d[101];
int v[101];
void solve(){
int i,j,k;
queue<int> q;
for(i=1;i<=n;i++)
d[i]=-10000000;
d[1]=0;
q.push(1);
v[1]=1;
while(!q.empty())
{
i=q.front();
q.pop();
v[i]=0;
e *p=edge[i].next;
while(p)
{
if(d[p->data]<d[i]+p->w)
{
d[p->data]=d[i]+p->w;
if(v[p->data]==0)
q.push(p->data);
}
p=p->next;
}
}
printf("%.6lf percent\n",100*exp(d[n]));
}
void add(int s,int t,double w)
{
e *p=new e;
p->data=s;
p->w=w;
p->next=edge[t].next;
edge[t].next=p;
e *q=new e;
q->data=t;
q->w=w;
q->next=edge[s].next;
edge[s].next=q;
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
int s,t;
double w;
while(cin>>n)
{
if(n==0) return;
cin>>m;
for(i=1;i<=n;i++)
edge[i].next=0;
for(i=1;i<=m;i++)
{
cin>>s>>t>>w;
add(s,t,log(w/100));
}
solve();
}
}
int main(){
read();
return 0;
}
#include<fstream>
#include<queue>
#include<cmath>
using namespace std;
struct e{
int data;
double w;
e *next;
};
e edge[101];
int n,m;
double d[101];
int v[101];
void solve(){
int i,j,k;
queue<int> q;
for(i=1;i<=n;i++)
d[i]=-10000000;
d[1]=0;
q.push(1);
v[1]=1;
while(!q.empty())
{
i=q.front();
q.pop();
v[i]=0;
e *p=edge[i].next;
while(p)
{
if(d[p->data]<d[i]+p->w)
{
d[p->data]=d[i]+p->w;
if(v[p->data]==0)
q.push(p->data);
}
p=p->next;
}
}
printf("%.6lf percent\n",100*exp(d[n]));
}
void add(int s,int t,double w)
{
e *p=new e;
p->data=s;
p->w=w;
p->next=edge[t].next;
edge[t].next=p;
e *q=new e;
q->data=t;
q->w=w;
q->next=edge[s].next;
edge[s].next=q;
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
int s,t;
double w;
while(cin>>n)
{
if(n==0) return;
cin>>m;
for(i=1;i<=n;i++)
edge[i].next=0;
for(i=1;i<=m;i++)
{
cin>>s>>t>>w;
add(s,t,log(w/100));
}
solve();
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号