hdu2682 Tree(prim模板)
来源:互联网 发布:ubuntu matlab java 编辑:程序博客网 时间:2024/06/06 12:51
http://acm.hdu.edu.cn/showproblem.php?pid=2682
#include<iostream>#include<cmath>#include<cstdio>using namespace std;const int N=610;const int M=2000000;const int MaxDist=2000002;int mat[N][N],dist[N],n;bool visit[N];int s[M],carry[M];void plan()//把2000000内的素数找出来{int i,j;fill(s,s+M,0);s[1]=1;for(i=2;i<=sqrt(double(M));i++){if(!s[i]){for(j=i*i;j<=M;j+=i)s[j]=1;}}}bool prime(int a)//判断是不是素数{return s[a]==0;}int Min(int a,int b){return a<b?a:b;}void prim(){int i,j,sum=0,carry1,carry2=0,cnt=0;for(i=0;i<n;i++){dist[i]=mat[i][0];visit[i]=false;}visit[0]=true;for(i=0;i<n;i++){carry1=MaxDist;for(j=0;j<n;j++){if(carry1>dist[j]&&visit[j]==false){carry1=dist[j];carry2=j;}}if(carry1==MaxDist)break;visit[carry2]=true;sum+=carry1;for(j=0;j<n;j++){if(dist[j]>mat[carry2][j]&&visit[j]==false){dist[j]=mat[carry2][j];}}}for(i=0;i<n;i++){if(visit[i]==false)break;}if(i<n)sum=-1;cout<<sum<<endl;}int main(){plan();int i,j,T;cin>>T;while(T--){cin>>n;fill(&mat[0][0],&mat[n][n]+1,MaxDist);for(i=0;i<n;i++)cin>>carry[i];for(i=0;i<n;i++)//按照题意把距离放入数组{for(j=0;j<n;j++){if(prime(carry[i])||prime(carry[j])||prime(carry[i]+carry[j])){mat[i][j]=mat[j][i]=Min(Min(carry[i],carry[j]),abs(carry[i]-carry[j]));}}}prim();}return 0;}
0 0
- hdu2682 Tree(prim模板)
- hdu2682 Tree (prim)
- HDU2682 Tree
- HDU2682 Tree 最小生成树
- hdu2682
- hdu2682
- hdu2682
- hdu2682 TREE 素数,最小生成树
- Jungle Roads (prim模板)
- poj1258 prim算法(模板)
- HDU 2682 Tree 最小生成树 prim模板
- HDU2682 Tree 题解 【最小生成树】【图论】【Kruskal】
- prim模板
- Prim 模板
- 模板-prim
- prim模板
- Prim模板
- Prim 模板
- 使用SharePoint Designer将JavaScript和自定义网站页面集成
- Spring 架构图
- leetcode:Merge Sorted Array
- Java 开发环境搭建_JDK的安装
- 读《白帽子讲WEB安全》注入攻击章摘记
- hdu2682 Tree(prim模板)
- Javascript实现简单的富文本编辑器
- 世界杯爆冷的球队的最新相关信息
- leetcode:Remove Duplicates from Sorted List II
- Spring事务配置的五种方式
- leetcode:Remove Duplicates from Sorted Array II
- 陈坤儿子的最新相关信息
- 群体思维
- 深度优先搜索与宽度优先搜索