poj 2349 Arctic Network 最小生成树
2015-03-23 22:49
288 查看
这道题有个大坑,最后输出的时候如果用printf会WRONG,用cout会AC,我看了半天也没发现题意里面对这点作出说明,太坑了,这道题花费了我一个多小时,一直在找错,尼玛
这道题题意不好懂啊,看了别人的博客才明白在说什么:
题意:有两种不同的通信技术,有卫星通信的两个城市之间可以任意联络,但用无线电通信的城市只能和距离不超过D的城市联系。无线电的能力越高(即传输距离D越大),花费就越大。已知无线电的数目m,让求最小的D。
思路:求出这些城市连同起来距离的总和是最小的,这就要考虑用到最小树。因为他又给了几个卫星,卫星是可以链接任意的两个城市的,所以把所有每两个城市距离从大到小排序,把前S个距离忽略掉,第S+1个距离就是要求的最小距离。
代码如下:
这道题题意不好懂啊,看了别人的博客才明白在说什么:
题意:有两种不同的通信技术,有卫星通信的两个城市之间可以任意联络,但用无线电通信的城市只能和距离不超过D的城市联系。无线电的能力越高(即传输距离D越大),花费就越大。已知无线电的数目m,让求最小的D。
思路:求出这些城市连同起来距离的总和是最小的,这就要考虑用到最小树。因为他又给了几个卫星,卫星是可以链接任意的两个城市的,所以把所有每两个城市距离从大到小排序,把前S个距离忽略掉,第S+1个距离就是要求的最小距离。
代码如下:
#include<iostream> #include<cstdio> #include<algorithm> #define ma 1000000 #include<math.h> using namespace std; struct node { int x,y; }s[510]; bool cmp(double a,double b) { return a>b; } double map[510][510],def[510],dist[510]; void prim(int n,int k) { int i,j,node; for(i=1; i<=n; i++) if(i!=k) def[i]=map[k][i]; def[k]=0; int index=0; for(i=1; i<n; i++) { double min=1000000; for(j=1; j<=n; j++) { if(def[j] && def[j]<min) { node=j; min=def[j]; } } dist[index++]=min; def[node]=0; for(j=1; j<=n; j++) { if(map[node][j]<def[j]) def[j] = map[node][j]; } } } int main() { int t,n,m,i,j; cin>>t; while(t--) { cin>>n>>m; for(i=1;i<=m; i++) cin>>s[i].x>>s[i].y; for(i=1; i<=m; i++) for(j=1; j<i; j++) { map[i][j]=map[j][i]=sqrt((s[i].x-s[j].x)*(s[i].x-s[j].x)+(s[i].y-s[j].y)*(s[i].y-s[j].y)); //cout<<map[i][j]<<' '; } //cout<<endl; for(i=1; i<=m; i++) map[i][i]=ma; prim(m,1); sort(dist,dist+m-1,cmp); cout.setf(ios::fixed);//保留两位小数 cout.precision(2); cout<<dist[n-1]<<endl; } return 0; }
相关文章推荐
- Arctic Network (poj 2349 最小生成树)
- POJ 2349 Arctic Network(最小生成树--prime)
- POJ 2349 Arctic Network 最小生成树题解
- poj 2349 Arctic Network 最小生成树第k大边-kruskal
- poj 2349 Arctic Network(图论:最小生成树)
- poj 2349 Arctic Network 最小生成树,求第k大条边
- POJ 2349 Arctic Network(最小生成树,第k大边权,基础)
- POJ 2349 Arctic Network(最小生成树思想)
- POJ 2349 Arctic Network(最小生成树)
- Prim最小生成树【poj 2349 Arctic Network;poj 1287 NetWorking】
- POJ 2349 Arctic Network(最小生成树 kruscal or prim)
- poj 2349 (最小生成树)Arctic Network
- POJ - 2349 Arctic Network (最小生成树分块)
- POJ 2349 Arctic Network [最小生成树]
- POJ 2349 Arctic Network(最小生成树之Prim)
- poj 2349 Arctic Network(最小瓶颈生成树)
- POJ 2349 Arctic Network (最小生成树第K大(小)边)
- poj-2349 Arctic Network 最小生成树
- POJ 2349 Arctic Network 最小生成树
- poj 2349 Arctic Network(最小生成树变形)