Tree 2682
来源:互联网 发布:机械矩阵沙盘排名 编辑:程序博客网 时间:2024/05/17 04:26
Tree
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1951 Accepted Submission(s): 572
Problem Description
There are N (2<=N<=600) cities,each has a value of happiness,we consider two cities A and B whose value of happiness are VA and VB,if VA is a prime number,or VB is a prime number or (VA+VB) is a prime number,then they can be connected.What's more,the cost to connecte two cities is Min(Min(VA , VB),|VA-VB|).
Now we want to connecte all the cities together,and make the cost minimal.
Now we want to connecte all the cities together,and make the cost minimal.
Input
The first will contain a integer t,followed by t cases.
Each case begin with a integer N,then N integer Vi(0<=Vi<=1000000).
Each case begin with a integer N,then N integer Vi(0<=Vi<=1000000).
Output
If the all cities can be connected together,output the minimal cost,otherwise output "-1";
Sample Input
251234544444
Sample Output
4-1//prim算法 #include<stdio.h>#include<string.h>#include<math.h>#define mx 0x3f3f3f3f#define min(a,b) (a>b?b:a)int s[1000010*2],a[610],g[610][610],vis[610],dis[610];int n;void find(){int i,j;s[1]=1;for(i=2;i<1000010*2;i++){if(!s[i]){for(j=i+i;j<1000010*2;j+=i){s[j]=1;}}}}int prim(){int i,j,k,min;int sum=0;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++)dis[i]=g[1][i];dis[1]=0;vis[1]=1;for(i=1;i<n;i++){k=-1;min=mx;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]<min){min=dis[j];k=j;}}if(k==-1)break;sum+=dis[k];vis[k]=1;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]>g[k][j]){dis[j]=g[k][j];}}}if(i<n)return -1;elsereturn sum;}int main(){int t;scanf("%d",&t);find();while(t--){int i,j;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=0;i<=n;i++){for(j=0;j<=n;j++){g[i][j]=mx;}}for(i=1;i<=n;i++){for(j=i+1;j<=n;j++){if(!s[a[i]] || !s[a[j]] || !(s[a[i]+a[j]]) ){g[i][j] = g[j][i] = min( min(a[i],a[j]), abs(a[i]-a[j]) );}}}printf("%d\n",prim());}return 0;}#include<stdio.h>#include<string.h>#include<math.h>#define mx 0x3f3f3f3f#define min(a,b) (a>b?b:a)int s[1000010*2],a[610],g[610][610],vis[610],dis[610];int n;void find(){int i,j;s[1]=1;for(i=2;i<1000010*2;i++){if(!s[i]){for(j=i+i;j<1000010*2;j+=i){s[j]=1;}}}}void prim(){int i,j,k,min;int sum=0;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++)dis[i]=g[1][i];dis[1]=0;vis[1]=1;for(i=1;i<n;i++){k=-1;min=mx;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]<min){min=dis[j];k=j;}}if(min==mx){printf("-1\n");return ;}sum+=dis[k];vis[k]=1;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]>g[k][j]){dis[j]=g[k][j];}}}printf("%d\n",sum);}int main(){int t;scanf("%d",&t);find();while(t--){int i,j;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=0;i<=n;i++){for(j=0;j<=n;j++){g[i][j]=mx;}}for(i=1;i<=n;i++){for(j=i+1;j<=n;j++){if(!s[a[i]] || !s[a[j]] || !(s[a[i]+a[j]]) ){g[i][j]=g[j][i]=min(min(a[i],a[j]),abs(a[i]-a[j]));}}}prim();}return 0;}#include<stdio.h>#include<string.h>#include<math.h>#define mx 0x3f3f3f3f#define min(a,b) (a>b?b:a)int s[1000010*2],dis[610],v[610],a[610],g[610][610];int n;void fun(){int i,j;s[1]=1;for(i=2;i<1000010*2;i++){if(!s[i]){for(j=i+i;j<1000010*2;j+=i){s[j]=1;}}}}void prim(){int i,j,k,min,sum=0;memset(v,0,sizeof(v));for(i=1;i<=n;i++){dis[i]=g[1][i];}dis[1]=0;v[1]=1;for(j=1;j<n;j++){min=mx;k=1;for(i=1;i<=n;i++){if(!v[i]&&dis[i]<min){min=dis[i];k=i;}}if(min==mx){printf("-1\n");return ;}sum+=min;v[k]=1;for(i=1;i<=n;i++){if(!v[i]&&dis[i]>g[k][i]){dis[i]=g[k][i];}}}printf("%d\n",sum);}int main(){int t;scanf("%d",&t);fun();while(t--){int i,j;scanf("%d",&n);for(i=0;i<=n;i++){for(j=0;j<=n;j++){if(i==j)g[i][j]=0;elseg[i][j]=mx;}}for(i=1;i<=n;i++){scanf("%d",&a[i]);}for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(!s[a[i]]||!s[a[j]]||!s[a[i]+a[j]]){g[i][j]=g[j][i]=min(min(a[i],a[j]),abs(a[i]-a[j]));}}}prim();}return 0;}
0 0
- Tree 2682
- hdu 2682 Tree
- hdu 2682 Tree
- HDU 2682 Tree
- hdoj 2682 Tree
- HDOJ--2682--Tree
- hdu 2682 Tree
- HDOJ 2682 Tree
- hdoj--2682--Tree()
- 杭电2682 Tree
- Tree
- tree
- tree
- TREE
- Tree
- Tree
- tree
- tree
- 动态规划基础入门(以数字三角形为例)
- Nginx模块开发(3)————使用upstream访问第三方服务
- leetcode 110: Balanced Binary Tree
- Dialog中EditText 弹出软键盘
- SDWebImage的使用
- Tree 2682
- leetcode 查找
- SSH系列-数据库乱码
- POJ 1113 Wall
- GDOI模拟8.10(COCI2012/2013)总结
- 解决VMware关闭后,系统卡顿问题
- c#网络编程资料
- Curling 2.0 POJ 3009
- C++学习之:打开文件对话框和打开文件夹对话框