题目:

输入:

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)的更多相关文章

  1. UVALive - 4223,hdu2962(简单dijkstra)

    Trucking Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. Dijkstra算法简单实现(C++)

    图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...

  3. [图论]Dijkstra 算法小结

    Dijkstra 算法小结  By Wine93 2013.11 1. Dijkstra 算法相关介绍 算法阐述:Dijkstra是解决单源最短路径的算法,它可以在O(n^2)内计算出源点(s)到图中 ...

  4. USACO comehome Dijkstra

    USER: Kevin Samuel [kevin_s1] TASK: comehome LANG: C++ Compiling... Compile: OK Executing... Test 1: ...

  5. 最少换乘(Dijkstra)

    Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年 ...

  6. 【图论】信手拈来的Prim,Kruskal和Dijkstra

    关于三个简单的图论算法 prim,dijkstra和kruskal三个图论的算法,初学者容易将他们搞混,所以放在一起了. prim和kruskal是最小生成树(MST)的算法,dijkstra是单源最 ...

  7. 图论之最短路径(1)——Floyd Warshall & Dijkstra算法

    开始图论学习的第二部分:最短路径. 由于知识储备还不充足,暂时不使用邻接表的方法来计算. 最短路径主要分为两部分:多源最短路径和单源最短路径问题 多源最短路径: 介绍最简单的Floyd Warshal ...

  8. 对于dijkstra最短路算法的复习

    好久没有看图论了,就从最短路算法开始了. dijkstra算法的本质是贪心.只适用于不含负权的图中.因为出现负权的话,贪心会出错. 一般来说,我们用堆(优先队列)来优化,将它O(n2)的复杂度优化为O ...

  9. 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 ...

随机推荐

  1. System.Web.UI.WebControls的Web服务器控件

    calendar[英][ˈkælɪndə(r)][美][ˈkæləndɚ]n.日历; 历法; 日程表; (一年之中的)重大事件(或重要日期)一览表; vt.把…记入日程表中; 把…列入表中; 为(文件 ...

  2. XML 特殊字符处理和 CDATA

    在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆. 所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA ...

  3. 部署Sharding分片

    这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群. MongoDB 的数据分块称为 ch ...

  4. C/C++将一个整型数组拼接成一个字符串

    参考: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> #include <string.h> int ma ...

  5. PHP中目录解析函数

    dirname(string path):给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名. 斜线(/)和反斜线(\)都可以用作目录分隔符.在其它环境下是斜线(/). dir ...

  6. 使用AIR进行移动APP开发常见功能和问题(上)

    1.  获取最近联系人 思路:侦听Geolocation的update事件,获取经度和纬度信息,再把坐标信息上传至服务器,服务器比较坐标信息算出距离,返回最近位置的若干个人. update时间在2种情 ...

  7. HDU5873

    Football Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  8. Excel实用知识3

    纯手打,可能有错别字,使用的版本是office2013 转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6343914.html ,谢谢 数据透视表 数据透视表是 ...

  9. 正则表达式之一:TSQL注释的查找

    最近自己做了个小项目,涉及到了大量的正则表达式匹配和处理,在这里也和大家分享一下. 我相信接触过SQL Server数据库的很多朋友都知道,它是以"--"开头来进行注释的,但你觉得 ...

  10. [转载] HTTP协议详解

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...