题目链接:

  http://poj.org/searchproblem

题目大意:

  飞天鼠是班长,一天班主任买了一大包糖果,要飞天鼠分发给大家,班里面有n个人,但是学生A认为学生B比自己多的糖果数目不应该大于c,如果不满足自己的条件,学生A就会向老师告状,在这个班级里面泰迪熊的编号是1,班长的编号是n,班长想和泰迪熊的糖果相差最大,问:在满足m个学生的要求后,班长与泰迪熊的糖果相差最大是多少?

解题思路:

  差分约束系统,|Xa-Xb| <= c,我们假设Xa小于Xb,把糖果的最大差当成边权,因为要满足全部人的要求,也就是要求所建图的最短路,用spfa+queue优化tle了,然后我就用了dijkstra+优先队列。感觉用邻接表+优先队列对dijkstra优化真是太美妙了,省去了很多的无用枚举,但是dijkstra的先天不足还是没有办法挽救~~~~

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 30010 struct Edge
{
int e, w;
Edge(int e=, int w=) : e(e),w(w) {}
}; bool operator < (const Edge &a, const Edge &b)
{
return a.w > b.w;//dist小的优先级高
} vector< vector<Edge> > G;//二维vector
//vector<Edge>G[maxn]要比前者慢,估计申请空间需要的时间也比较可观
bool vis[maxn];
int n; void dijkstra(); int main ()
{
int m;
while (scanf ("%d %d", &n, &m) != EOF)
{
G.clear();
G.resize(n+);//动态申请空间
while (m --)
{
int a, b, s;
scanf ("%d %d %d", &a, &b, &s);
G[a].push_back(Edge(b, s));
}
dijkstra ();
}
return ;
} void dijkstra()
{
priority_queue<Edge>Q;
Edge p, q;
memset (vis, false, sizeof(vis));
p.e = , p.w = ;
Q.push (p); while (!Q.empty())
{
p = Q.top();//选取最优点
Q.pop();
if (vis[p.e])//已求出最短路,进行下一个
continue; if (p.e == n)//已求出1到n的最短路
break;
vis[p.e] = true;
int len = G[p.e].size(); for (int i=; i<len; i++)
{
q = G[p.e][i];
if ( !vis[q.e] )//对剩余的点进行松弛操作
{
q.w += p.w;
Q.push(q);
}
}
}
printf ("%d\n", p.w);
}

最新文章

  1. Jvascript简介
  2. java语言的I/O操作预习
  3. IOS GCD定时器
  4. Java—Servlet开发
  5. Type.GetField 修改类中私有字段。
  6. C#文件复制功能
  7. jquery 绑定省份和城市
  8. Android 属性动画(二)
  9. Linux下终端利器tmux(转)
  10. crontab 添加sh文件定时
  11. salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
  12. fprintf&amp;prinft&amp;sprintf
  13. express学习之session
  14. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习7
  15. [转]Python中__repr__和__str__区别
  16. CROSSUI桌面工具 分布加载模块(Distributed UI Module) 与 主模块Module 之间数据传输!
  17. FFT(Rock Paper Scissors Gym - 101667H)
  18. mysql 合理创建索引
  19. SpringMVC开发小结
  20. django中日志配置

热门文章

  1. eclipse工程设置项目jre
  2. ZXing 二维码解析生成工具类
  3. datasnap中间件如何控制长连接的客户端连接?
  4. Excel小tips - 如何实现多列成绩统一排名
  5. curl -s 不输出统计信息
  6. 鼠标放上去Div旋转特效代码
  7. Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
  8. Coding Ninja 修炼笔记 (1)
  9. 【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例
  10. 电子设计省赛--PID