判断第k短路的权值是否小于T

直接把队友的代码拿过来了,一定很经典

#include <iostream>
#include <queue>
#include <cstring>
#include <vector> using namespace std; const int maxn = ;
const int INF = 0x7fffffff;
int N, M, S, E, K, T;
int inq[maxn];
int dis[maxn];
int cnt[maxn]; struct Edge
{
int u, v, w;
Edge(int a, int b, int c):u(a), v(b), w(c){}
}; struct Node
{
int d, v;
Node(int a, int b):d(a), v(b){}
bool operator < (const Node &x) const {return d+dis[v]>x.d+dis[x.v];}
}; struct Node1
{
int d, v;
Node1(int a, int b):d(a), v(b){}
bool operator < (const Node1 &x) const {return d>x.d;}
}; vector<Edge> edge1;
vector<Edge> edge2;
vector<int> G1[maxn];
vector<int> G2[maxn]; inline void addedge(int a, int b, int c)
{
edge1.push_back(Edge(a,b,c));
G1[a].push_back(edge1.size()-);
edge2.push_back(Edge(b,a,c));
G2[b].push_back(edge2.size()-);
} void dijkstra_init()
{
priority_queue<Node1>Q;
memset(inq, , sizeof(inq));
std::fill(dis, dis+maxn, INF);
dis[E] = ;
Q.push(Node1(, E));
while(!Q.empty())
{
auto x = Q.top(); Q.pop();
if(inq[x.v]) continue;
inq[x.v] = true;
for(int i = ; i < G2[x.v].size(); ++i)
{
Edge &m = edge2[G2[x.v][i]];
if(dis[m.v]>dis[m.u]+m.w)
{
dis[m.v] = dis[m.u]+m.w;
Q.push(Node1(dis[m.v], m.v));
}
}
}
} int k_th()
{
memset(cnt, , sizeof(cnt));
priority_queue<Node>Q;
if(dis[S]>=INF) return -;
Node e(, S);
Q.push(e); while(!Q.empty())
{
Node x = Q.top();Q.pop(); cnt[x.v]++; if(x.v == E)
{
if(x.d>T) return -;
if(cnt[x.v] == K) return x.d;
} if (cnt[x.v] > K) continue; for(unsigned int i = ; i < G1[x.v].size(); i++)
{
Node n(x.d+edge1[G1[x.v][i]].w, edge1[G1[x.v][i]].v);
if(cnt[n.v] != K)
Q.push(n);
}
}
return -;
} int main()
{
while(scanf("%d%d", &N, &M) != EOF)
{
edge1.clear();
edge2.clear(); for(int i = ; i < maxn; ++i)
{
G1[i].clear();
G2[i].clear();
} scanf("%d%d%d%d", &S, &E, &K, &T); for(int i = ; i <= M; ++i)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
addedge(a, b, c);
} dijkstra_init(); int ans = k_th(); if(ans <= T && ans != -) printf("yareyaredawa\n");
else printf("Whitesnake!\n");
}
return ;
}

图论&搜索:K短路-启发式搜索的更多相关文章

  1. Remmarguts' Date POJ - 2449 (A*搜索|k短路)

    "Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...

  2. 数据结构&图论:K短路-可持久化可并堆

    本来A*就可以搞定的题,为了怕以后卡复杂度,找了个这么个方法 现阶段水平不够就不补充算法分析部分了 对于图G,建立一个以终点t为起点的最短路径构成的最短路径树 (就是反着跑一遍最短路,然后对于一个不为 ...

  3. POJ 2449 Dijstra + A* K短路

    这题一开始的思路应该是直接从源点进行BFS搜索K短路. 但这样的复杂度在点数和K的值增大后将会变得很大. 而A*算法则构造一个h(x),在进行BFS时,每次都抛出最小的h(x)从而使汇点的出队速度加快 ...

  4. 【10.9校内练习赛】【搜索】【2-sat】【树链剖分】【A_star k短路】【差分约束+判负环】

    在洛谷上复制的题目! P3154 [CQOI2009]循环赛 题目描述 n队伍比赛,每两支队伍比赛一次,平1胜3负0. 给出队伍的最终得分,求多少种可能的分数表. 输入输出格式 输入格式: 第一行包含 ...

  5. 多源第k短路 (ford + 重新定义编号) / 出发点、终点确定的第k短路 (Spfa+ 启发搜索)

    第k短路 Description 一天,HighLights实在是闲的不行,他选取了n个地点,n各地点之间共有m条路径,他想找到这m条路径组成的第k短路,你能帮助他嘛? Input 第一行三个正整数, ...

  6. 与图论的邂逅07:K短路

    在做最短路的题时我们不免会碰到许多求次短路的题,然而我们也能很快地想到解决的办法: 用dijkstra跑一遍最短路,当终点第二次被取出时就是次短路了.时间复杂度为O((N+M)logN).实际上前面得 ...

  7. 图论(A*算法,K短路) :POJ 2449 Remmarguts' Date

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 25216   Accepted: 6882 ...

  8. WC2015 k小割(k短路+暴力+搜索)

    首先这道题不是非同一般的恶心,三个数据层次对应三个程序= = PROBLEM:http://uoj.ac/problems解法: 1~2直接暴力枚举边的选择与否+判断就行了 7~14可以发现是一个平面 ...

  9. 【模板篇】k短路 SDOI2010 魔法猪学院

    题目传送门 吐槽时间 题目分析 代码 题目の传送门 都成了一道模板题了OvO ============================================================= ...

随机推荐

  1. 王者荣耀交流协会 - 第6次Scrum会议(第二周)

    Scrum master :刘耀泽 工作照片: 照片由刘耀泽(本人)拍摄,组内成员刘耀泽,高远博,王磊,王玉玲,王超,任思佳,袁玥全部到齐. 时间跨度: 2017年10月25日 17:00 — 17: ...

  2. Python:元组操作总结

    Python的元组和列表类似,不同之处在于元组中的元素不能修改(因此元组又称为只读列表),且元组使用小括号而列表使用中括号,如下: tup1=('physics','chemistry',1997,2 ...

  3. 【转】node.js框架比较

    我偶然间看到这篇文章,转这个文章并没有什么含义,仅仅是感觉总结的不错,对于新学node的友友们来说希望这篇文章为大家对 Node.js 后端框架选型带来一些帮助,学习不再迷茫,也是让我有个保存,以后参 ...

  4. 404_NOTE_Foung_软工6

    目录 NABCD分析引用 N(Need,需求): A(Approach,做法): B(Benefit,好处): C(Competitors,竞争): D(Delivery,交付): 初期 中期 个人贡 ...

  5. linux & zip & tar

    linux & zip & tar https://zzk.cnblogs.com/s?w=blog%3Axgqfrms%20zip # zip -r 递归 file_name.zip ...

  6. mysql 、慢查询、到底如何玩

    在项目开发中,那些开发大佬经常会写出一些SQL语句,一条糟糕的SQL语句可能让你测试的整个程序都非常慢,超过10秒的话,我觉得一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较长的SQL ...

  7. MVC 中创建简单过滤器

    1.新建一个类,继承自 ActionFilterAttribute类,并重写OnActionExecuting()方法 public class LoginFilter:ActionFilterAtt ...

  8. apache server-status配置

    引言 自己配置LAMP服务器时(xwamp),获取状态信息出现错误: You don't have permission to access /server-status on this server ...

  9. CSUOJ 1141——第四届河南省程序设计大赛

    题目的意思是给你一个机器人,初始的时候在某一个给定的路灯位置,机器人要把路边所有的路灯关掉,每个路灯都有一个距离和一个功率,求要把所有的路灯关掉最小的最终能耗是多少? 题目是一个很明显的区间DP.可以 ...

  10. [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...