标签:des style blog http color strong
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 24979 | Accepted: 8114 |
Description
Input
Output
Sample Input
2 0 0 3 4 3 17 4 19 4 18 5 0
Sample Output
Scenario #1 Frog Distance = 5.000 Scenario #2 Frog Distance = 1.414
Source
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
double G[210][210];
int n;
struct Point{
double x,y;
}a[210];
float dist(Point a,Point b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
void dij(){
double dis[210];
int vis[210];
for(int i=1;i<=n;i++)
vis[i]=0;
vis[1]=1;
dis[1]=0.0;
for(int i=2;i<=n;i++)
dis[i]=G[1][i];
for(int i=1;i<n;i++){
double min=999999.0;
int v;
for(int j=2;j<=n;j++)
if(!vis[j] && dis[j]<min){
min=dis[j];
v=j;
}
vis[v]=1;
for(int j=1;j<=n;j++){
double tmp=(dis[v]<G[v][j] ? G[v][j] : dis[v]); //注意这里是最短路径变形
dis[j]= tmp<dis[j] ? tmp : dis[j];
}
}
cout<<setiosflags(ios::fixed)<<setprecision(3)<<dis[2]<<endl<<endl;
}
int main(){
int cas=1;
while(cin>>n&&n){
for(int i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
G[i][j]=dist(a[i],a[j]);
cout<<"Scenario #"<<cas++<<endl;
cout<<"Frog Distance = ";
dij();
}
return 0;
}
poj 2253 (dis最短路径),布布扣,bubuko.com
标签:des style blog http color strong
原文地址:http://blog.csdn.net/my_acm/article/details/37991205