题目:

输入:

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

    https://en.wikipedia.org/wiki/Datalog http://www.csd.uoc.gr/~hy562/1112_spring/instr_material/WhatYo ...

  2. bzoj1396

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1396 题目大意: 题解:后缀自动机,只出现一次,那么就是right值为1,那么对于一段1-- ...

  3. linux上编译安装python2.7.5

    下载python2.7.5,保存到 /data/qtongmon/software http://www.python.org/ftp/python/ 解压文件 tar xvf Python-2.7. ...

  4. PHP 合并数组 追加数组例子

    PHP合并数组我们可以使用array_merge()函数,array_merge()函数返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加.其形式为: arra ...

  5. eclipse调试找不到源解决办法

    eclipse调试时有时显示找不到源码,首先得确定代码没问题 这是eclipse没有发现工程源码,解决办法是 右键工程>>Debug As >> Debug configura ...

  6. JavaSwing JScrollPane的使用

    JavaSwing JScrollPane的使用: 参考:http://duyz.blog.ifeng.com/article/340649.html package com.srie.test; i ...

  7. spring mvc 引用 jasper JasperReportsHtmlView的nullpx图片问题

    spring mvc 引用 jasper  JasperReportsHtmlView的nullpx图片问题 参考:http://stackoverflow.com/questions/1168633 ...

  8. jQuery 对象与Dom 对象互转

    jQuery 对象与Dom 对象互转: $obj --[i],get(i)-->obj --$(obj)-->$obj; obj--$($(obj))-->$obj,多包装了也是$o ...

  9. TypeScript入门指南(JavaScript的超集)

    TypeScript入门指南(JavaScript的超集)   你是否听过 TypeScript? TypeScript 是 JavaScript 的超集,TypeScript结合了类型检查和静态分析 ...

  10. 2016 ACM/ICPC Asia Regional Qingdao Online(2016ACM青岛网络赛部分题解)

    2016 ACM/ICPC Asia Regional Qingdao Online(部分题解) 5878---I Count Two Three http://acm.hdu.edu.cn/show ...