zoukankan      html  css  js  c++  java
  • 【最小生成树入门专题1】A

    描述

    最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了!

    但是,问题也接踵而来——小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道路所需要的费用,小Hi希望知道,最少花费多少就可以使得任意两座城市都可以通过所建造的道路互相到达(假设有A、B、C三座城市,只需要在AB之间和BC之间建造道路,那么AC之间也是可以通过这两条道路连通的)。

    提示:不知道为什么Prim算法和Dijstra算法很像呢Σ(っ °Д °;)っ 。

    输入

    每个测试点(输入文件)有且仅有一组测试数据。

    在一组测试数据中:

    第1行为1个整数N,表示小Hi拥有的城市数量。

    接下来的N行,为一个N*N的矩阵A,描述任意两座城市之间建造道路所需要的费用,其中第i行第j个数为Aij,表示第i座城市和第j座城市之间建造道路所需要的费用。

    对于100%的数据,满足N<=10^3,对于任意i,满足Aii=0,对于任意i, j满足Aij=Aji, 0&ltAij&lt10^4.

    输出

    对于每组测试数据,输出1个整数Ans,表示为了使任意两座城市都可以通过所建造的道路互相到达至少需要的建造费用。

    Sample Input
    5
    0 1005 6963 392 1182 
    1005 0 1599 4213 1451 
    6963 1599 0 9780 2789 
    392 4213 9780 0 5236 
    1182 1451 2789 5236 0 
    Sample Output
    4178

    虽然是个模板题 但是好歹是自己第一次用prime算法A的题    再水也留个纪念吧,今天已经被堆排序给废了,明天起来待我把优化的prime算法给学会


    #include<stdio.h>
    #define N 1100
    #define inf 99999999
    int book[N],dis[N],e[N][N];
    
    int main()
    {
    	int n;
    	int i,j,sum,count,u,min;
    	while(scanf("%d",&n)!=EOF)
    	{
    		sum =0 ;
    		count = 0;
    		for(i = 1; i <= n; i ++)
    			for(j = 1; j <= n; j ++)
    				if(i == j)
    					e[i][j] = 1;
    				else 
    					e[i][j] = inf;
    		for(i = 1; i <= n; i ++)
    			book[i] = 0;
    		for(i = 1; i <= n; i ++)
    		{
    			for(j = 1; j <= n; j ++)
    			{
    				scanf("%d",&u);
    				e[i][j] = u;
    				e[j][i] = u;
    			}
    		}
    		for(i = 1; i <= n; i ++)
    			dis[i] = e[1][i];
    			
    		book[1] = 1;
    		count ++;
    		while(count < n)
    		{
    			min = inf;
    			for(i = 1; i <= n; i ++)
    			{
    				if(!book[i]&&dis[i] < min)
    				{
    					u = i;
    					min = dis[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];
    			}
    			
    		}
    		printf("%d
    ",sum);
    	}
    	return 0;
    }
    





  • 相关阅读:
    安装devstack之配置proxy
    设备信息表项目
    好的运维工程师
    rhel 6.4 增加光盘为yum repo
    深度运维产品工具关键词
    坚持是一种能力
    书单 电影单 电视剧单
    三日不读书,便觉得言语无味,面目可憎
    STAR法则
    【断舍离】
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7350085.html
Copyright © 2011-2022 走看看