去长沙理工考ccf。恰好又可以见闺蜜。

前2道题很简单,第三题题目太长就跳过了【绕来绕去就像“你儿子是我儿子的爸爸一样头疼”】,就做第四题。但是还有最后一个部分没写写好就到点了。

现在把它补充完整。

我忘记怎么在函数参数中使用二维数组,所以直接把函数写在main里。

分为2个部分,一个是求最短路径,一个是找出要改建的路。

最短路径采用的是dijkstra算法。

寻找要改建的路的部分。我一开始一直想要使用最小支撑树实现【即贪心算法】。但是我后来恍然发现,最后一个状态一定是每个城市都能以最短路径达到首都。那么a城市的最短路径就是与a相邻的某一个城市b的最短路径加上ab城市的距离。

需要说明的是,我没有使用大量数据测试。

仅供参考,如有错误,欢迎指正,共同学习。

 #include<iostream>
#define far 1000
using namespace std;
int main()
{
int n,m,i,j,k;
int sum=;
int x,y,z;
cin>>n>>m;
int a[n][n],edge[m];
int visit[n],dis[n];
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
a[i][j]=far;
}
visit[i]=;
dis[i]=far;
}
for(i=;i<m;i++)
{
cin>>x>>y>>z;
a[x-][y-]=a[y-][x-]=z;
edge[i]=z;
}
for(i=;i<n;i++)
{
for(j=;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
dis[]=;
int v;
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
if(visit[j]==&&dis[j]!=far)
v=j;
}
for(j++;j<n;j++)
{
if((visit[j]==)&&(dis[j]<v))
v=j;
}
visit[v]=;
for(j=;j<n;j++)
{
if(dis[j]>dis[v]+a[v][j])
dis[j]=dis[v]+a[v][j];
} }
for(j=;j<n;j++)
cout<<dis[j]<<" ";
cout<<endl; for(i=;i<n;i++)
visit[i]=; visit[]=;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
if(edge[j]==dis[i])
{
cout<<"改变的边--"<<edge[j]<<endl;
sum=sum+edge[j];
edge[j]=;
visit[i]=;
}
}
}
for(i=;i<n;i++)
{
if(visit[i]==)
{
for(j=;j<n;j++)
{
if(dis[j]+a[i][j]==dis[i])
{
for(int k=;k<m;k++)
{
if(edge[k]==a[i][j])
{
cout<<"改变的边--"<<edge[k]<<endl;
sum=sum+edge[k];
edge[k]=;
visit[i]=;
break;
}
}
}
}
}
}
cout<<endl<<"sum---"<<sum<<endl;
cout<<"visit"<<endl;
for(i=;i<n;i++)
cout<<visit[i]<<" ";
return ; }

因为没有注释,可能比较难看懂。不懂的地方,也欢迎和我交流。

2016年9月ccf的更多相关文章

  1. 2016年12月31日 星期六 --出埃及记 Exodus 21:26

    2016年12月31日 星期六 --出埃及记 Exodus 21:26 "If a man hits a manservant or maidservant in the eye and d ...

  2. 2016年12月30日 星期五 --出埃及记 Exodus 21:25

    2016年12月30日 星期五 --出埃及记 Exodus 21:25 burn for burn, wound for wound, bruise for bruise.以烙还烙,以伤还伤,以打还打 ...

  3. 2016年12月29日 星期四 --出埃及记 Exodus 21:24

    2016年12月29日 星期四 --出埃及记 Exodus 21:24 eye for eye, tooth for tooth, hand for hand, foot for foot,以眼还眼, ...

  4. 2016年12月28日 星期三 --出埃及记 Exodus 21:23

    2016年12月28日 星期三 --出埃及记 Exodus 21:23 But if there is serious injury, you are to take life for life,若有 ...

  5. 2016年12月27日 星期二 --出埃及记 Exodus 21:22

    2016年12月27日 星期二 --出埃及记 Exodus 21:22 "If men who are fighting hit a pregnant woman and she gives ...

  6. 2016年2月16日开始,每天一篇,记录学习心得,【基本技能篇】>>开篇《如何阅读一本书——心得》

    如何阅读一本书——心得 ——2016年2月12日 要达到阅读的所有目的,就必须在阅读不同书籍的时候,运用适当的不同速度.读的太快或太慢,都一无所获. 四个阅读层次:①基础阅读,具有基本阅读的能力,包括 ...

  7. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

  8. c++中变量声明和变量定义的区别。2016年12月6日

    整个流程: 1.程序告诉cpu,程序将要使用一个变量.(暂时不一定用到,先说一下.) 2.程序告诉CPU,程序现在就要使用一个变量.(现在就用) 3.cpu按照这个变量的类型,把内存划分出几个单位(b ...

  9. Yoshua Bengio 2016年5月11日在Twitter Boston的演讲PPT

    Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt) Yoshua Bengio,电脑科学家,毕业于麦吉尔大学,在MIT和AT&T贝尔实验室做过博士后研 ...

随机推荐

  1. 【转】XCode快捷键

    原文网址:http://www.cnblogs.com/yjmyzz/archive/2011/01/25/1944325.html 1. 文件 CMD + N: 新文件CMD + SHIFT + N ...

  2. (转载)在vmware中简单配置vsftpd服务器

    (转载)http://blog.chinaunix.net/uid-7453676-id-2625582.html 分类: LINUX 一 试验的前期环境搭建   系统环境:Fedora 2   软件 ...

  3. JavaScript高级程序设计20.pdf

    用户代理检测 为了不在全局作用域中添加多余的变量,我们使用模块增强模式来封装检测脚本 以下是完整的用户代理字符串检测脚本,包括检测呈现引擎.平台.Window操作系统.移动设备和游戏系统 var cl ...

  4. ndk编译时的通用Android.mk文件

    LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := live555 MY_SRC_PATH := $(LOCAL_PA ...

  5. python 3 处理HTTP 请求的包

    http http: https://docs.python.org/3/library/http.html http是一个包,里面含有多个模块:http.client,http.server,htt ...

  6. JavaScript函数柯里化的一些思考

    1. 高阶函数的坑 在学习柯里化之前,我们首先来看下面一段代码: var f1 = function(x){ return f(x); }; f1(x); 很多同学都能看出来,这些写是非常傻的,因为函 ...

  7. poj 1328贪心

    Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...

  8. OpenCV 2.4.9

    2014.4.25 感谢那些參加开发.发送错误报告以及通过其它方式帮助我们的全部人和公司. 源代码如今已经可以从SourceForge和Github上下载了. 2.4.9版本号的帮助文章也更新到如今的 ...

  9. 亿图图示专家v7.7破解版

    软件简介 亿图图示专家是一款综合矢量绘制软件,新颖小巧,功能强大,可以很方便的绘制各种专业的流程图.组织结构图.网络拓扑图.思维导图.商业图表.科学设计图等.轻轻松松绘制各种专业流程图,网络图,思维导 ...

  10. Qt的皮肤设计(Style Sheet)

      Qt的皮肤设计,也可以说是对Qt应用程序的界面美化,Qt使用了一种类CSS的样式规则QSS. 一.Style Sheet的应用 1.直接在程序代码中设置样式,利用setStyleSheet()方法 ...