潇洒の开始

第一步:食用头文件和定义变量,

变量干什么用的说的很清楚

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,p,c,i,j,x,y,t,min1,head,tail,tot,u;
int a[][],b[],dis[],num[],w[][],team[];//team为队列,dis为距离,num为邻接点个数,a存相邻点
bool exist[];//exist是存在的意思,确定某个元素是否存在
int main()

第二步:正常的输入

    cin>>n>>p>>c;//奶牛数,牧场数,牧场间的道路数
for(i=; i<=p; i++)
{
b[i]=;
num[i]=;
for(j=; j<=p; j++)
w[i][j]=0x7fffffff/;//第i到第j个牧场的路程初始化为无穷
}

将两点之间的距离变为超大超大的数,酱紫好比较的啦

第三步:正常的输入加存储

for(i=; i<=n; i++)
cin>>b[i];//输入奶牛所在的牧场号
for(i=; i<=c; i++) //邻接矩阵存储,采用循环队列能够降低队列大小,队列长度只需开到2*n+5即可。
{
cin>>x>>y>>t;//相连牧场AB和两牧场间的距离
w[x][y]=t;//保存x到y间的距离
a[x][++num[x]]=y;//存相邻点,在num原有的基础上加一,并将y点存入
a[y][++num[y]]=x;//存相邻点,在num原有的基础上加一,并将x点存入
w[y][x]=w[x][y];//因为是双向连通的,所以两牧场间的距离相等
}

详细解释代码里面说的很清楚了,在啰嗦一下,双向的很重要

用地接斯科拉的哥们们注意了。

第四步:初始化minn

min1=0x7fffffff/3;//初始化min

最后一步:gao chao 预警

for(i=; i<=p; i++)
{
for(j=; j<=p; j++) dis[j]=0x7fffffff/;
//memset(team,0,sizeof(team)); //队列数组初始化
//memset(exist,false,sizeof(exist)); //exist标志初始化
dis[i]=;
team[]=i;
head=;
tail=;
exist[i]=true; //起始点入队
while(head!=tail)
{
head++;
head=((head-)%)+; //循环队列处理
u=team[head];
exist[u]=false;
for(j=; j<=num[u]; j++) //num数组储存的为当前点所相邻的点的个数
if (dis[a[u][j]]>dis[u]+w[u][a[u][j]])
{
dis[a[u][j]]=dis[u]+w[u][a[u][j]];
if (!exist[a[u][j]])//如果该点没有被拿出,就进行处理
{
tail++;
tail=((tail-)%)+;
team[tail]=a[u][j];
exist[a[u][j]]=true;//拿出该数
}
}
}
tot=;
for(j=; j<=n; j++)
tot+=dis[b[j]];//累加路程并计算
if (tot<min1) min1=tot;//找最小
}
cout<<min1;
return ;

初始化我是去掉了,因为定义在int main()外面是不需要再次清零的

然后就是类似手打的队列,挨个比较找到小的就马上替换,重要的是没有被用过就处理

再就是挨个比较找最小值就好了

完整代码:

完整代码

完美の结束

(这是我之前做的题,现在才拿出来写题解忘得差不多了,写的不好请多多谅解QWQ) (看的这么累,不点个赞再走)

最新文章

  1. KMP专题
  2. Unity3D音乐音效研究-MIDI与波表
  3. PHP_Memcache函数详解
  4. web前端基础篇④
  5. 使用树莓派和kali Linux打造便携式渗透套件
  6. Delphi中自画TStatusBar面板中的文字颜色背景以及图片
  7. vim编辑器配置
  8. Sandcastle:生成.NET API文档的工具 (帮忙文档)
  9. C#学习笔记10:Try-catch的用法和引用类型、值类型整理
  10. C# 文件帮助类
  11. Java多线程基础——Lock类
  12. 201521123042《Java程序》第二周总结
  13. java 之 原型模式(大话设计模式)
  14. oracle启用归档日志
  15. 如何将Tomcat添加到服务中【笔记】
  16. WebApi开启CORS支持跨域POST
  17. CAN总线疑惑与解答
  18. java通过反射调用有参数的方法
  19. SVG.Js事件示例,简单绑定拖动操作
  20. SQL一些问题

热门文章

  1. java之spring之scope和autowiring
  2. asp.net core 核心对象解析
  3. Spring中BeanFactory与FactoryBean的区别
  4. npm全局模块卸载及默认安装目录修改方法
  5. mysql 根据日期进行查询数据,没有数据也要显示空
  6. Celery:Daemonization
  7. base64的使用
  8. 在DoNetCore MVC 中如何使用AutoMapper
  9. linux上安装redis-单机版
  10. Windows环境下的MYSQL5.7配置文件定位