hdu 4849 Wow! Such City!(dijstra)
来源:互联网 发布:编程什么意思 编辑:程序博客网 时间:2024/05/27 20:11
题目链接:hdu 4849 Wow! Such City!
题目大意:有N个城市,给定计算两两城市距离的公式,然后求0到1~N-1的城市中,最短路径模掉M的最小值。
解题思路:先根据公式求出距离C矩阵,注意中间连乘3次的可能爆long long,然后用裸的dijstra算法求最短路。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int maxd = 1005;const int maxn = maxd * maxd;const ll INF = 0x3f3f3f3f3f3f3f3f;int N, M;ll X[maxn], Y[maxn], Z[maxn];ll C[maxd][maxd], d[maxd];void init_distant () { for (int i = 1; i < N * N; i++) { if (i >= 2) { X[i] = (12345 + X[i-1] * 23456 + X[i-2] * 34567 + (X[i-1] * X[i-2] % 5837501) * 45678) % 5837501; Y[i] = (56789 + Y[i-1] * 67890 + Y[i-2] * 78901 + (Y[i-1] * Y[i-2] % 9860381) * 89012) % 9860381; } Z[i] = (X[i] * 90123 + Y[i]) % 8475871 + 1; } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j) C[i][j] = 0; else C[i][j] = Z[i*N+j]; } }}ll dijstra () { int v[maxd]; memset(v, 0, sizeof(v)); for (int i = 0; i < N; i++) d[i] = INF; d[0] = 0; ll ans = INF; for (int i = 0; i < N; i++) { int u = 0; ll dis = INF; for (int j = 0; j < N; j++) { if (d[j] < dis && v[j] == 0) { u = j; dis = d[j]; } } v[u] = 1; if (d[u] % M < ans && u) ans = d[u] % M; for (int j = 0; j < N; j++) { if (d[u] + C[u][j] < d[j]) d[j] = d[u] + C[u][j]; } } return ans;}int main () { while (scanf("%d%d%lld%lld%lld%lld", &N, &M, &X[0], &X[1], &Y[0], &Y[1]) == 6) { init_distant(); printf("%lld\n", dijstra()); } /* while (cin >> N >> M >> X[0] >> X[1] >> Y[0] >> Y[1]) { init_distant(); cout << dijstra() << endl; } */ return 0;}
2 0
- hdu 4849 Wow! Such City!(dijstra)
- hdu 4849 Wow! Such City!
- HDU 4849 Wow! Such City!
- 【HDU】4849 Wow! Such City! 最短路
- HDU 4849 Wow! Such City!(Dijkstra)
- HDU 4849 Wow! Such City! 最短路
- HDU-4849 Wow! Such City!,最短路!
- hdu 4849 最短路 西安邀请赛 Wow! Such City!
- 模拟 + 最短路 之 hdu 4849 Wow! Such City!
- HDU 4849 —— Wow! Such City!(最短路)
- HDU 4849 Wow! Such City! (Dijkstra, 最短路)
- HDU 4849-Wow! Such City!(最短路)
- hdu 4849 Wow! Such City! (最短路spfa)
- hdu4849 Wow! Such City!
- hdu4849 Wow! Such City!
- Wow! Such City!
- 2014西安全国邀请赛 1003 && HDU 4849 Wow! Such City! (单源最短路Djikstra算法)
- HDU 4849 2014西安邀请赛 C题 Wow! Such City! 最短路
- POJ 3630 - Phone List (Trie)
- iOS开发ASIHttpRequest
- SwingWorker的使用一
- 字母重排
- 如何异步调用Visual C#函数How to call a Visual C# method asynchronously
- hdu 4849 Wow! Such City!(dijstra)
- 推荐算法之基于物品的协同过滤算法
- 1379: [Baltic2001]Postman
- MDK环境的ARM汇编中内存对齐与对ADR Rd,{PC}+n形式的理解
- 【android】app测试工具
- 安装windows phone 8开发环境
- POJ 2485 Highways
- 初探linux子系统集之led子系统(一)
- 南邮ACM 1015 最大公约数和最小公倍数 JAVA解法