标签:ase cstring main pac name cpp creat i++ 练习
求第一个点到第二个点的所有通路上最长的边
dijkstra的变形 每次松弛的是每条边通路上的的最长的边
WA了好几次是因为用了%lf 改成%f就过了……
1 /* *********************************************** 2 Author :SunYuefeng 3 Created Time :2016/10/22 14:18:06 4 File Name :A.cpp 5 ************************************************ */ 6 7 #include<cstdio> 8 #include<iostream> 9 #include<algorithm> 10 #include<cmath> 11 #include<cstring> 12 #include<string> 13 #include<bitset> 14 #include<map> 15 #include<set> 16 #include<stack> 17 #include<vector> 18 #include<queue> 19 #include<list> 20 #define M(a,b) memset(a,b,sizeof(a)) 21 using namespace std; 22 typedef long long ll; 23 const int inf=0x3f3f3f3f; 24 const int maxn=2e2+10; 25 const int mod=1e7+7; 26 int dx[8]= {0,0,1,-1,1,-1,1,-1}; 27 int dy[8]= {1,-1,0,0,-1,1,1,-1}; 28 29 int n,m; 30 double way[maxn][maxn]; 31 double dis[maxn]; 32 bool vis[maxn]; 33 34 struct point{ 35 int x,y; 36 double dist(point a){ 37 return sqrt((x-a.x)*(x-a.x)+(y-a.y)*(y-a.y)); 38 } 39 }pt[maxn]; 40 41 void dijkstra(int x){ 42 for(int i=0;i<n;i++){ 43 dis[i]=way[0][i]; 44 vis[i]=false; 45 } 46 dis[x]=0; 47 for(int i=0;i<n;i++){ 48 int k=-1; 49 double min=inf; 50 for(int j=0;j<n;j++){ 51 if(!vis[j]&&dis[j]<min){ 52 min=dis[j]; 53 k=j; 54 } 55 } 56 if(k==1) break; 57 vis[k]=true; 58 for(int j=0;j<n;j++){ 59 if(!vis[j]&&dis[j]>max(dis[k],way[j][k])){ 60 dis[j]=max(dis[k],way[j][k]); 61 } 62 } 63 } 64 printf("Frog Distance = %.3f\n\n",dis[1]); 65 } 66 67 int main() 68 { 69 //freopen("in.txt","r",stdin); 70 //freopen("out.txt","w",stdout); 71 int _case=1; 72 while(~scanf("%d",&n)&&n){ 73 printf("Scenario #%d\n",_case++); 74 for(int i=0;i<n;i++) 75 for(int j=0;j<n;j++) 76 way[i][j]=inf; 77 for(int i=0;i<n;i++) 78 scanf("%d%d",&pt[i].x,&pt[i].y); 79 for(int i=0;i<n;i++){ 80 for(int j=0;j<n;j++){ 81 if(i==j) continue; 82 way[i][j]=pt[i].dist(pt[j]); 83 way[j][i]=pt[i].dist(pt[j]); 84 } 85 } 86 dijkstra(0); 87 } 88 return 0; 89 }
[kuangbin带你飞]专题四 最短路练习 POJ 2253 Frogger
标签:ase cstring main pac name cpp creat i++ 练习
原文地址:http://www.cnblogs.com/general10/p/5987966.html