【最小生成树入门专题1】H
来源:互联网 发布:阿里云搭建mc服务器 编辑:程序博客网 时间:2024/05/22 06:40
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.
Each case begin with a integer N,then N integer Vi(0<=Vi<=1000000).
251234544444
4-1
#include<stdio.h>#include<math.h>#include<stdlib.h>#include<string.h>#define inf 9999999 int e[1100][1100];int book[1100],a[1100];int dis[1100];int isprime[2010000];int Min(int a,int b){if( a<b)return a;return b;}int Prime(int n){int i;if(n ==1||n==2)return 0;for(i = 2; i *i <= n; i ++){if(n%i == 0)return 0;}return 1;}int main(){int t;int n,i,j,u,count,sum,min,flag;for(i = 1; i <= 2001000; i ++){isprime[i] = 1;}isprime[0] = isprime[1] = 0;for(i = 1; i*i <= 2001000; i ++){if(isprime[i]){for(j = i*2; j <= 2001000; j = j+i){isprime[j] = 0;}}}scanf("%d",&t);while(t--){memset(a,0,sizeof(a)); memset(dis,0,sizeof(dis)); memset(book,0,sizeof(book)); memset(e,0,sizeof(e));sum = count = 0;flag = 0;u = 0;scanf("%d",&n);for(i = 1; i <= n; i ++)scanf("%d",&a[i]);for(i = 1; i <= n; i ++)for(j = 1; j <= n; j ++){if(i == j)e[i][j] = 0;else if(isprime[a[i]]||isprime[a[j]]||isprime[a[i]+a[j]]){e[i][j] = Min(abs(a[i]-a[j]),Min(a[i],a[j]));e[j][i] = Min(abs(a[i]-a[j]),Min(a[i],a[j]));}else{e[i][j] = inf;e[j][i] = inf;}}for(i = 1; i <= n; i ++){dis[i] = e[1][i];}count ++;book[1] = 1;while(count < n){min = inf;for(i = 1; i <= n; i ++){if(!book[i]&&dis[i]<min){min = dis[i];u = i;}}book[u] = 1;sum = sum + dis[u];count ++;for(i = 1; i <= n; i ++){if(!book[i]&&dis[i]>e[u][i]){dis[i] = e[u][i];}}}for(i = 1; i <= n; i ++)if(book[i])flag++;if(flag != n)printf("-1\n");elseprintf("%d\n",sum);}return 0;}
阅读全文
0 0
- 【最小生成树入门专题1】H
- 【最小生成树入门专题1】G
- 【最小生成树入门专题1】A
- 【最小生成树入门专题1】C
- [最小生成树入门专题1] zoj1203 E
- [kuangbin带你飞]专题六 最小生成树 H
- 最小生成树专题
- 最小生成树专题
- 最小生成树专题
- 最小生成树专题
- (专题)最小生成树
- 专题六-最小生成树
- 【搜索入门专题1】hdu2717 H
- 【最短路入门专题1】H
- 【二分图匹配入门专题1】H
- UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题)
- Kuangbin Flying 6最小生成树专题
- 【各大OJ】最小生成树专题
- (3)练习
- webGIS学习(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理 发布于 3 年前 作者 lzxue 7473 次浏览 来自 技术 1.没有豆浆机怎么办? 喝豆浆是我们早晨中基本
- 贝叶斯生成对抗网络(GAN)
- 2.高性能MySQL --- MySQL 基准测试
- 关于迭代器的在集合遍历中发生的并发修改异常(java.util.ConcurrentModificationException
- 【最小生成树入门专题1】H
- Excel VBA 打开对话框,获取文件夹路径
- sklearn文档 — 1.4. 支持向量机
- dojo中declare()与define()的区别
- python升级导致yum命令无法使用的解决办法(修改版)
- Gradle sync failed: Plugin with id 'com.novoda.bintray-release' not found
- WebGIS学习(三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
- Linux--shell中字符串的截取
- 面向对象的基本概念