?? 2472.txt
字號(hào):
Memory:148K Time:78MS
Language:C++ Result:Accepted
Source
#include"iostream.h"
#include"stdio.h"
#include"math.h"
const int size=100;
typedef double type;
type e[size][size];
////////////////////////////////////////////////////////////////////////////////////////////////
// dijstra 連通返回1,否則返回0;
// strat 源點(diǎn);
// e 邊權(quán)矩陣;
// ans 返回到各點(diǎn)的最短距離;
bool dijstra(int start,int n,type e[size][size],type ans[size])
{
const type max=99999999;
int i,j,k;
type dis[size],temp;
bool reach[size];
for(i=0;i<n;i++)
reach[i]=false,dis[i]=max;
dis[start]=0;
for(i=0;i<n;i++)
{
k=-1;
for(j=0;j<n;j++)
{
if( !reach[j] //dijstra
&&(k<0||dis[k]>dis[j]))
k=j;
}
if(k<0)break;
reach[k] = true;
for(j=0;j<n;j++)
{
temp=dis[k]+e[k][j];
if(dis[j]>temp)
dis[j]=temp;
}
}
for(j=0;j<n;j++)
ans[j]=dis[j];
return k>=0;
}
///////////////////////////////////////////////////////////////////////
int n,m;
bool init()
{
int i,j,a,b;
double c;
cin>>n;
if(n==0) return 0;
cin>>m;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
e[i][j]=1e10;
for(i=0;i<m;i++)
{
cin>>a>>b>>c;
e[a-1][b-1]=-log(c/100)<e[a-1][b-1]?-log(c/100):e[a-1][b-1];
e[b-1][a-1]=e[a-1][b-1];
}
return 1;
}
int main()
{
double dis[100];
while(init())
{
dijstra(0,n,e,dis);
printf("%.6lf percent\n",exp(-dis[n-1])*100);
}
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -