【题目链接】

  • 点击打开链接

【思路要点】

  • 补档博客,无题解。

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN    50005
#define INF 1e18
#define P   1000000007
template <typename T> void read(T &x) {x = 0; int f = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';x *= f;
}
struct info {long long value; int pos; };
bool operator < (info a, info b) {return a.value > b.value; }
int n, m, s, t;
int x[MAXN], y[MAXN], z[MAXN];
vector <int> a[MAXN];
vector <int> b[MAXN];
priority_queue <info> Heap;
long long dist[MAXN];
bool finished[MAXN];
bitset <MAXN> seta[MAXN], setb[MAXN];
map <int, bitset <MAXN> > f;
long long cnta[MAXN], cntb[MAXN];
void worka(int pos) {cnta[pos] = (pos == t);seta[pos].set(pos);if (pos == t) return;for (unsigned i = 0; i < a[pos].size(); i++) {worka(a[pos][i]);cnta[pos] += cnta[a[pos][i]];cnta[pos] %= P;if (cnta[a[pos][i]]) seta[pos] |= seta[a[pos][i]];}
}
void workb(int pos) {cntb[pos] = (pos == s);setb[pos].set(pos);if (pos == s) return;for (unsigned i = 0; i < b[pos].size(); i++) {workb(b[pos][i]);cntb[pos] += cntb[b[pos][i]];cntb[pos] %= P;if (cntb[b[pos][i]]) setb[pos] |= setb[b[pos][i]];}
}
int main() {read(n), read(m), read(s), read(t);for (int i = 1; i <= m; i++) {read(x[i]), read(y[i]), read(z[i]);if (z[i] == 0) continue;a[x[i]].push_back(y[i]);a[y[i]].push_back(x[i]);b[x[i]].push_back(z[i]);b[y[i]].push_back(z[i]);}for (int i = 1; i <= n; i++)dist[i] = INF;dist[s] = 0;Heap.push((info) {0, s});while (!Heap.empty()) {while (!Heap.empty() && finished[Heap.top().pos])Heap.pop();if (Heap.empty()) break;info tmp = Heap.top();Heap.pop();for (unsigned i = 0; i < a[tmp.pos].size(); i++)if (tmp.value + b[tmp.pos][i] < dist[a[tmp.pos][i]]) {dist[a[tmp.pos][i]] = tmp.value + b[tmp.pos][i];Heap.push((info) {dist[a[tmp.pos][i]], a[tmp.pos][i]});}}for (int i = 1; i <= n; i++)a[i].clear();for (int i = 1; i <= n; i++)b[i].clear();for (int i = 1; i <= m; i++) {if (z[i] == 0) continue;if (dist[x[i]] + z[i] == dist[y[i]]) a[x[i]].push_back(y[i]), b[y[i]].push_back(x[i]);if (dist[y[i]] + z[i] == dist[x[i]]) a[y[i]].push_back(x[i]), b[x[i]].push_back(y[i]);}worka(s);workb(t);for (int i = 1; i <= n; i++) {cnta[i] = cnta[i] * cntb[i] % P;seta[i] |= setb[i];seta[i].set(i);f[cnta[i]].set(i);}long long ans = 0;for (int i = 1; i <= n; i++) {int tmp = (cnta[t] - cnta[i] + P) % P;ans += (f[tmp] & (~seta[i])).count();}cout << ans / 2 << endl;return 0;
}

【BZOJ5109】【CodePlus2017】大吉大利,晚上吃鸡!相关推荐

  1. HTML5+css+JS实现页面打枪声音特效减压玩法 PUBG 大吉大利 今晚吃鸡

    HTML5+css+JS实现页面打枪声音特效减压玩法 PUBG 大吉大利 今晚吃鸡 css部分 *{margin: 0;padding:0;}body{min-height:100vh;overflo ...

  2. 老司机带你在MySQL领域“大吉大利,晚上吃鸡”

    关注↑↑↑我们获得更多精彩内容! 作者 | 张甦, 数据库领域的专家和知名人士.图书<MySQL王者晋级之路>作者,51CTO 专家博主.近10年互联网线上处理及培训经验,专注于 MySQ ...

  3. 大吉大利-今晚吃鸡-枪械

    题目描述 在绝地求生(吃鸡)游戏里,不同的枪支有不同的威力,更是可以搭配不同的配件,以提升枪支的性能. 每一把枪都有其威力及其可装备配件种类.每一个配件有其所属种类,可以为枪支提供威力的百分比加成.每 ...

  4. 大吉大利-今晚吃鸡-跑毒

    题目描述 现在有一款很火的游戏playerunknown's battlegrounds,人称"吃鸡",在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中 ...

  5. 大吉大利 今晚吃鸡之跑毒篇

    现在有一款很火的游戏playerunknown's battlegrounds,人称"吃鸡",在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中毒状态,每 ...

  6. 大吉大利今晚吃鸡——枪械篇

    题目链接:点击打开链接 这题难点带就是输入?我是因为用float精度不够才不过的,改成double就ok了 #include <cstdio> using namespace std;in ...

  7. 大吉大利今晚吃鸡——跑毒篇

    题目链接:点击打开链接 问题 1. 边界部分恰好擦着的时候到底是死是活.......写到程序里就是有没有=的问题. 首先题目里明确指出打包的时候擦着就是死. 然后后面有个带着你理解第二个样例的部分,这 ...

  8. 计算机内存不足吃鸡怎么办,Win10玩吃鸡游戏提示虚拟内存不足怎么办?

    Win10玩吃鸡游戏提示"虚拟内存不足"怎么办? 最近吃鸡游戏非常火,大家都想大吉大利晚上吃鸡!因为吃鸡游戏对电脑配置的要求非常高,所以很多用户在玩吃鸡手游时会遇到各种问题,最常见 ...

  9. 吃鸡一直显示服务器,吃鸡一直显示服务器未连接 | 手游网游页游攻略大全

    发布时间:2017-05-12 怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之后,心中对于吃鸡的疑惑也是越来越大,为什么有时候明明开局不顺却最后吃鸡,而有时候明明很肥却送了快递.所以今天 ...

  10. 为什么吃鸡显示连接不到服务器,为什么吃鸡进游戏显示连接不上 | 手游网游页游攻略大全...

    发布时间:2015-09-28 原因:显卡太老,不支持DX9.0c+SM3.0 解决方法:换新显卡 标签: 发布时间:2017-05-12 怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之 ...

最新文章

  1. IETester-IE兼容性测试工具
  2. Lucene 源码分析之倒排索引(三)
  3. python【数据结构与算法】选数问题(选不相连最大值——DP)
  4. 源码阅读之Java栈的实现
  5. 跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列
  6. 电脑睡眠快捷键_电脑学习:苹果电脑快捷键
  7. 奇妙的曲线--希尔伯特曲线
  8. 编程时程序无错却崩溃_人间真实:程序员的 60 个崩溃瞬间!
  9. 一键搭建php本地测试环境_如何在PHP中设置本地调试环境
  10. 测试中如何管理外包质量_【项目管理】资深游戏测试总监详解质量管理工作的9个步骤...
  11. 应用:文件夹copy器(多进程版)
  12. Android 资源(resource)学习小结
  13. 怎么判断间隙过渡过盈配合_什么是间隙配合、过盈配合、过渡配合?它们在汽车上有哪些应用?...
  14. 皮肤黄吃什么可以变白?店湾妹来教你几招!
  15. 计算机网络4小时速成:应用层,cs模型,p2p模型,DNS域名系统,文件传输协议FTP,电子邮件SMTP,万维网HTTP,动态主机配置协议DHCP
  16. c语言输入坐标三角形周长面积,3.1.7计算三角形周长和面积
  17. 阿里测试岗,面试官狂问自动化,把我问到哑口无言……
  18. win10OneNote登录微软 账号登陆出现错误码0x80190001
  19. 网站表单自动填写【使用pyautogui 】
  20. Android数据传输加密(一):Base64转码算法

热门文章

  1. 修改战网昵称服务器错误,暴雪又改了游戏平台名字 暴雪战网回来了
  2. C-V2X仿真测试之虚拟场景设计
  3. 系统设计之时间维度[数据仓库]
  4. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 6笔记
  5. 免费的chk恢复工具
  6. 浅谈工业互联网与产业互联网区别
  7. Java Web 开发后续(四)
  8. 测试空间与测试驱动接口设计 step to step
  9. winpe linux系统安装win7,WINPE+LINUX+DOS 完美者U盘维护系统V8.6 及安装方法
  10. meta标签详解(name、http-equiv、scheme、charset、各浏览器常用meta标签、常见移动端meta标签)、viewport详解