hdoj 1875 畅通工程再续
2013-10-24 17:37
453 查看
题目传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1875
http://acm.hdu.edu.cn/showproblem.php?pid=1875
//9403289 2013-10-24 17:00:49 Accepted 1875 62MS 376K 2205 B C++ 空信高手 #include <iostream> #include <cmath> #include <iomanip> using namespace std; #define typec double #define V 101 const typec inf=10000000; int vis[V]; typec lowc[V],cost[V][V]; typedef struct { int x; int y; } POINT; POINT pnts[V]; /*=================================================*\ | Prim求MST | INIT: cost[][]耗费矩阵(inf为无穷大); | CALL: prim(cost, n); 返回-1代表原图不连通; \*==================================================*/ typec prim(int n) { int i,j,p; typec minc,res=0; memset(vis,0,sizeof(vis)); vis[0]=1; for(i=1; i<n; i++) lowc[i]=cost[0][i]; for(i=1; i<n; i++) { minc=inf; p=-1; for(j=0; j<n; j++) { if(0==vis[j]&&minc>lowc[j]) { minc=lowc[j]; p=j; } } if(inf==minc) return -1; res+=minc; vis[p]=1; for(j=0; j<n; j++) if(0==vis[j]&&lowc[j]>cost[p][j])lowc[j]=cost[p][j]; } return res; } double calDis(POINT a,POINT b) { return sqrt(double((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))); } void Init() { int i,j; for(i=0; i<V; i++) for(j=0; j<V; j++) cost[i][j]=10000000; } int main() { // freopen("input.txt","r",stdin); int n,i,j; while(cin>>n&&n!=0) { while(n--) { int m; double Sum=0; cin>>m; Init(); //memset(cost,inf,sizeof(cost)); for(i=0; i<m; i++) cin>>pnts[i].x>>pnts[i].y; for(i=0; i<m; i++) for(j=0; j<m; j++) { if(calDis(pnts[i],pnts[j])<=1000.000001&&calDis(pnts[i],pnts[j])>=10.000000) cost[i][j]=calDis(pnts[i],pnts[j]); } // if(!flag) cout<<setiosflags(ios::fixed)<<setprecision(1)<<prim(m)*100<<endl; // else cout<<"oh!"<<endl; Sum=prim(m); if(Sum<0) cout<<"oh!"<<endl; else cout<<setiosflags(ios::fixed)<<setprecision(1)<<Sum*100<<endl; } } return 0; }
相关文章推荐
- hdoj1875畅通工程再续
- HDOJ 1875 畅通工程再续
- HDoj-1875-畅通工程再续-prim算法
- HDOJ-1875 畅通工程再续
- HDOJ 1875 畅通工程再续
- HDOJ 1875 畅通工程再续
- HDOJ---1875 畅通工程再续[Prim()算法]
- hdoj.1875 畅通工程再续【最小生成树】 20141129
- hdoj 1875 畅通工程再续 (最小生成树之prim算法)
- hdoj-1875-畅通工程再续
- HDOJ-1875-畅通工程再续 解题报告
- HDOJ 1875 畅通工程再续(最小生成树)
- HDOJ--1875--畅通工程再续
- hdoj 1875 畅通工程再续
- HDOJ题目1875畅通工程再续(基础最小生成树)
- HDOJ 1875 畅通工程再续 (最小生成树)
- hdoj 1875 畅通工程再续 【最小生成树】【prim算法】
- hdoj 1875 畅通工程再续
- HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU
- HDOJ 1875 畅通工程再续 最小生成树 kruskal && prim