Frogger--POJ 2253
2010-08-11 16:42
351 查看
1、题目类型:图论、最小生成树、Prim算法。
2、解题思路:Prim算法生成最小生成树过程中寻找最长Edge。
3、注意事项:每个case结束后,输出空行;pow()函数中需强制转换double。
4、实现方法:
2、解题思路:Prim算法生成最小生成树过程中寻找最长Edge。
3、注意事项:每个case结束后,输出空行;pow()函数中需强制转换double。
4、实现方法:
#include<iostream> #include<cmath> #include<algorithm> using namespace std; #define Max 210 #define INF 9999999.9 struct TNode{ int x,y; }; TNode Node[Max]; int n,casenum,cnt; double map[Max][Max]; bool vis[Max]; double Prim() { int i,j,pos; double dis[Max],ans=0; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) dis[i]=map[0][i]; vis[0]=1; for(i=0;i<n-1;i++) { pos=min_element(dis+1,dis+n)-dis; if(ans<dis[pos]) ans=dis[pos]; if(pos==1) break; else { vis[pos]=1; dis[pos]=INF; for(j=0;j<n;j++) { if(!vis[j]&&dis[j]>map[pos][j]) dis[j]=map[pos][j]; } } } return ans; } int main() { int i,j; while(cin>>n && n) { casenum++; for(i=0;i<n;i++) { cin>>Node[i].x>>Node[i].y; } for(i=0;i<n;i++) { map[i][i]=INF; for(j=i+1;j<n;j++) { map[i][j]=map[j][i]=sqrt(pow((double)(Node[i].x-Node[j].x),2)+pow((double)(Node[i].y-Node[j].y),2)); } } cout<<"Scenario #"<<casenum<<endl; printf("Frog Distance = %.3f\n",Prim()); cout<<endl; } return 1; }
相关文章推荐
- POJ 2253 Frogger
- POJ 2253 - Frogger
- POJ培训计划2253_Frogger(最短/floyd)
- POJ 2253 Frogger
- POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形
- POJ 刷题系列:2253. Frogger
- POJ - 2253 - Frogger (Dijkstra)
- Poj 2253 Frogger【kuskal变形】
- poj 2253 Frogger(floyd)
- poj 2253 Frogger【Dijkstru&&floyd】
- poj 2253 Frogger
- POJ 2253 Frogger
- POJ 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger (最长路中的最短路)
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
- Frogger poj 2253 dijkstra
- poj2253 Frogger(各种图论基础算法都能搞)&&poj1797 Heavy Transportation
- POJ 2253 Frogger