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贝尔实验室做过博士后研 ...
随机推荐
- bzoj1863
白书上的题目 这里唯一要说一下的就是,二分答案不难想到,怎么构造答案的合理性非常值得注意 ..] of longint; n,l,r,m,ans,i:longint; function max ...
- 凯撒密码 CH Round #57 - Story of the OI Class
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2357%20-%20Story%20of%20the%20OI%20Class/凯撒密码 题解:刚开始想map, ...
- 谷歌浏览器怎么调试js
首先我们打开开发者工具,你可以直接在页面上点击右键,然后选择审查元素或者在Chrome的工具中找到或者你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台) ...
- FBReader移植日记 第二天
昨天我们的移植工作进行了一大半,还留下两个重要的部分没有完成:1.没有移植的 ZLTextView,2.FormatPlugin相关的类. 第一个问题我们放在后面解决,下面先解决格式插件的问题. 我们 ...
- bzoj 2819 Nim(BIT,dfs序,LCA)
2819: Nim Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1596 Solved: 597[Submit][Status][Discuss] ...
- github 上的pull request总结
自己先要fork别人的代码. 然后把代码git clone到本地.. 当自己有提交的时候, 可以在git commit之后 git push origin master 然后这份git push or ...
- w10 系统升级
怎么把电脑升级到w10系统? 下载一个软件,Windows10Upgrade9252.exe, 5M左右,把windows更新开启后,运行即可! 升级后,请把windows.old 文件夹删除,这个文 ...
- 在Sql Server 2005中将主子表关系的XML文档转换成主子表“Join”形式的表
本文转载:http://www.cnblogs.com/Ricky81317/archive/2010/01/06/1640434.html 最近这段时间在Sql Server 2005下做了很多根据 ...
- Windows 服务卸载之后 重新安装提示 “指定的服务已标记为删除”
背景: 将一个项目做成一个windows服务,在调试的时候,需要卸载.安装该服务,但提示下面的错误:“指定的服务已标记为删除”,进入服务管理界面,启动自己注册的服务,无法手动更改成启用模 ...
- android 44 SQLiteOpenHelper
java package com.sxt.day06_10; import java.util.ArrayList; import com.sxt.day06_10.entity.StudentBea ...