2016年9月ccf
去长沙理工考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的更多相关文章
- 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 ...
- 2016年12月30日 星期五 --出埃及记 Exodus 21:25
2016年12月30日 星期五 --出埃及记 Exodus 21:25 burn for burn, wound for wound, bruise for bruise.以烙还烙,以伤还伤,以打还打 ...
- 2016年12月29日 星期四 --出埃及记 Exodus 21:24
2016年12月29日 星期四 --出埃及记 Exodus 21:24 eye for eye, tooth for tooth, hand for hand, foot for foot,以眼还眼, ...
- 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,若有 ...
- 2016年12月27日 星期二 --出埃及记 Exodus 21:22
2016年12月27日 星期二 --出埃及记 Exodus 21:22 "If men who are fighting hit a pregnant woman and she gives ...
- 2016年2月16日开始,每天一篇,记录学习心得,【基本技能篇】>>开篇《如何阅读一本书——心得》
如何阅读一本书——心得 ——2016年2月12日 要达到阅读的所有目的,就必须在阅读不同书籍的时候,运用适当的不同速度.读的太快或太慢,都一无所获. 四个阅读层次:①基础阅读,具有基本阅读的能力,包括 ...
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- c++中变量声明和变量定义的区别。2016年12月6日
整个流程: 1.程序告诉cpu,程序将要使用一个变量.(暂时不一定用到,先说一下.) 2.程序告诉CPU,程序现在就要使用一个变量.(现在就用) 3.cpu按照这个变量的类型,把内存划分出几个单位(b ...
- Yoshua Bengio 2016年5月11日在Twitter Boston的演讲PPT
Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt) Yoshua Bengio,电脑科学家,毕业于麦吉尔大学,在MIT和AT&T贝尔实验室做过博士后研 ...
随机推荐
- bzoj2729
一看就知道是数学题,考虑插空法由于老师只有两人,所以先对老师进行插空这里考虑两种情况:1.两个老师站在同一处,即两个男生之间站了两个老师这时候需要一个女生站在两个老师之间,再对女生插空,根据乘法原理即 ...
- bzoj1257
这道题初看确实没什么思路,感觉之前的数论知识都用不上,只好自己找规律首先当n>=k 这部分是很容易直接算出的下面我们先来尝试这穷举i,不难发现当穷举i时,总存在一段连续的除数,k div i=p ...
- 串口传输文件 lrzsz
假设有一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果你想跟这块板子传输交互文件,要怎么办? 根据modem所采用的文件传输协议:xmodem,ymode ...
- FBReader移植日记 第一天
1.目标是创建两个工程,一个j2se的桌面软件,用于编辑和预览epub等格式的电子书,预览的窗口可以设置分辨率来模拟不同的设备,把编辑的结果实时的显示出来.另一个是Android的应用,用于阅读,管理 ...
- 层层递进Struts1(七)详解DispatchAction
通过前面几篇博客,不知道大家有没有发现这个问题,虽然现在可以灵活控制跳转了,但是Action的数量还是比较多,如何既能保证跳转灵活,还能减少Action的数量?这就是我们这篇博客所说的Dispatch ...
- CAS学习笔记(三)—— SERVER登录后用户信息的返回
一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户信息吧,不然客户端是怎么知道登录的是哪个用户.那么客户端要怎么获取用户信息呢? 其实验证成 ...
- FIREDAC TFDCONNECTION连接MYSQL数据库
FIREDAC TFDCONNECTION连接MYSQL数据库 procedure TfrmDB.ConnectDB;begin FDMoniFlatFileClientLink1.FileName ...
- c#基础语言编程-装箱和拆箱
引言 为什么有装箱和拆箱,两者起到什么作用?NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对 ...
- Cubieboard 开箱和入门 | Name5566 分类: cubieboard 2014-11-08 17:27 251人阅读 评论(0) 收藏
Cubieboard 开箱和入门 2014 年 01 月 29 日 by name5566 Categories: Computer Science, Cubieboard Hello Cubiebo ...
- ssss
18:15 2013/6/18 未结束的事情1 应用API接口切换2 03in.com 项目管理授权 软件中不成功3 党校考核时间 段列出所有 10:51 2013/6/20 daili 应用修改1 ...