p1217晚餐(简单的dijkstra)
题目:
输入:
1000 5 6
1 2 300
2 4 200
3 4 600
3 4 800
5 3 100
2 5 650
输出:
4
这道题呢,其实就是用邻接矩阵将每条边耗费的体力存起来,然后用dijkstra算法求出每个牧场到Bessie所在的第一个牧场所耗费的最少时间,然后统计一下在
t范围内的有几头奶牛即可。
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[][];
bool b[][];
int dis[];
bool vis[];
int main()
{
int t,f,p;
cin>>t>>f>>p;
memset(a,,sizeof(a));
memset(b,false,sizeof(b));
for(int i=;i<=p;i++)
{
int xx,yy,zz;
cin>>xx>>yy>>zz;
if(b[xx][yy]==true||b[yy][xx]==true)
{
if(zz<a[xx][yy])
a[xx][yy]=zz;
}
if(b[xx][yy]==false)
{
a[xx][yy]=zz;
a[yy][xx]=zz;
b[xx][yy]=true;
}
}
int sum=;
int maxx=-;
//for(int k=1;k<=f;k++)
{
for(int i=;i<=f;i++)
dis[i]=a[][i];
memset(vis,,sizeof(vis));
vis[]=;
dis[]=;
for(int i=;i<f;i++)
{
int minn=;
int x=;
for(int j=;j<=f;j++)
{
if(!vis[j]&&(dis[j]<minn))
{
minn=dis[j];
x=j;
}
}
if(x==)
break;
vis[x]=;
for(int j=;j<=f;j++)
{
if(!vis[j]&&(dis[x]+a[x][j]<dis[j]))
{
dis[j]=dis[x]+a[x][j];
}
}
}
sum=;
for(int i=;i<=f;i++)
{
if(dis[i]<=t)
sum++;
}
if(sum>maxx)
{
maxx=sum;
}
}
cout<<maxx<<endl;
return ;
}
输入时,因为我发现每两个牧场间会有重复的路,所以用bool型数组记录一下这两个草地见是否已经有路了,如果有的话直接
从这两个重复的路中选出耗费体力最少的留下。
p1217晚餐(简单的dijkstra)的更多相关文章
- UVALive - 4223,hdu2962(简单dijkstra)
Trucking Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Dijkstra算法简单实现(C++)
图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...
- [图论]Dijkstra 算法小结
Dijkstra 算法小结 By Wine93 2013.11 1. Dijkstra 算法相关介绍 算法阐述:Dijkstra是解决单源最短路径的算法,它可以在O(n^2)内计算出源点(s)到图中 ...
- USACO comehome Dijkstra
USER: Kevin Samuel [kevin_s1] TASK: comehome LANG: C++ Compiling... Compile: OK Executing... Test 1: ...
- 最少换乘(Dijkstra)
Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年 ...
- 【图论】信手拈来的Prim,Kruskal和Dijkstra
关于三个简单的图论算法 prim,dijkstra和kruskal三个图论的算法,初学者容易将他们搞混,所以放在一起了. prim和kruskal是最小生成树(MST)的算法,dijkstra是单源最 ...
- 图论之最短路径(1)——Floyd Warshall & Dijkstra算法
开始图论学习的第二部分:最短路径. 由于知识储备还不充足,暂时不使用邻接表的方法来计算. 最短路径主要分为两部分:多源最短路径和单源最短路径问题 多源最短路径: 介绍最简单的Floyd Warshal ...
- 对于dijkstra最短路算法的复习
好久没有看图论了,就从最短路算法开始了. dijkstra算法的本质是贪心.只适用于不含负权的图中.因为出现负权的话,贪心会出错. 一般来说,我们用堆(优先队列)来优化,将它O(n2)的复杂度优化为O ...
- PAT 1072. Gas Station (30)
A gas station has to be built at such a location that the minimum distance between the station and a ...
随机推荐
- Python模块学习:threading 多线程控制和处理
Reference:http://python.jobbole.com/81546/ threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有 ...
- JSON详解(转载)
JSON详解 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如何使用JSON 在.NET中如何使用JSON 总结 JSON的全称是”JavaScript Object Notation”, ...
- MongoDB复制集环境搭建
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1853478 环境介绍 ...
- 关于android:id="@+id/xx"的理解
之前学习android的时候,对android:id="@+id/xx"总感觉混淆,不理解,刚看了一篇文章.现在貌似是恍然大悟.故做了一下笔记,希望帮助有共同问题的人... and ...
- delphi popupmenu控件用法
是,右键菜单控件,和特定的窗体控件的popmenu属性关联就可以了 添加一个popupmenu控件,双击该控件,在弹出的界面中设置好name以及caption属性,点击事件的做法就跟button一样了 ...
- JavaWeb三层结构---课设02
收获总结 1三层架构模式 区分层次的目的即为了“高内聚,低耦合”的思想 分层介绍: Javaweb设计分为三层:数据访问层,业务逻辑层和表示层. 数据访问层:只提供对基本数据的访问,不涉及任何的业务逻 ...
- 使AIX下ksh可以翻查上一条命令
http://blog.csdn.net/wangjialiang/article/details/7106393 http://www.blogjava.net/03081626/archive/2 ...
- Myeclipse8.5 反编译插件 jad 安装(转)
准备工作 下载jad.exe文件:http://www.varaneckas.com/sites/default/files/jad/jad158g.win.zip 下载jadeclipse插件:ht ...
- css3基础知识——回顾
1.属性选择器 完全匹配的属性选择器 [id=article]{} 示例: <style> input[type=text]{ border: 2px solid red;} </s ...
- WebForm 控件(二)
控件 Calendar:日历控件 但是html代码量太大不适用 FileUpdate: 文件上传 HiddenField:隐藏域 Image: 图片 可以直接给URL 不适用可用html代码写 Ta ...