去长沙理工考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. bzoj2653

    CLJ神牛的可持久化论文的题目,果然厉害其实第一步能想到后面就还是很简单的首先是二分答案,转化为判定性问题然后对于区间内的数,比他大的标为1,小的标为-1显然,如果存在一个左右端点符合的区间使得这个区 ...

  2. WordPress Event Easy Calendar插件多个跨站请求伪造漏洞

    漏洞名称: WordPress Event Easy Calendar插件多个跨站请求伪造漏洞 CNNVD编号: CNNVD-201309-083 发布时间: 2013-09-11 更新时间: 201 ...

  3. 导航软件 CH Round #57 - Story of the OI Class

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2357%20-%20Story%20of%20the%20OI%20Class/导航软件 题解:刚开始看见题目, ...

  4. -_-#【JS】隐含全局变量

    隐含全局变量与明确定义的全局变量有细微的不同,不同之处在于能否使用delete操作符撤销变量 使用var创建的全局变量(这类变量在函数外部创建)不能删除不使用var创建的隐含全局变量(尽管它是在函数内 ...

  5. Myeclipse在启动Tomcat服务器的时候总是进入debug视图的解决方法

    最近调试程序,由于出现过一些错误,在调试的时候,更改过一些东西,但是后来在myeclipse下启动Tomcat服务器的时候,自动的跳入到debug视图了(以前是一启动Tomcat服务器后,直接就加载t ...

  6. SQL-LINQ-Lambda语法对照

    SQL LINQ Lambda SELECT *FROM HumanResources.Employee from e in Employees select e Employees .Select ...

  7. thinkphp中使用PHPEXCEL导入数据

    导入方法比较简单 但必须考虑到Excel本身单元格格式问题 例如以0开头的字符串读出来被去掉了前导0 成为float型而丢失一位 必须进行处理 <?php /** * Author lizhao ...

  8. c++重点知识点

    - const加强 在变量前加const,说明变量是常量只读属性.假如用指针去修改const常量会用什么结果.上例子: //a 是一个只读的常量,按照理论应该不能被修改 ;//内存中为a分配地址,赋值 ...

  9. div页面居中(上下左右)

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  10. docker 下 安装rancher 笔记

    sudo yum update 更新系统环境 curl -sSL https://get.docker.com/ | sh 安装最新docker版本 systemctl start docker.se ...