kuangbin_ShortPath O (LightOJ 1074)
2016-01-14 00:07
585 查看
这是什么鬼OJ啊都没见过害的我还交错语言CE了一发摔
想着懒得重写了直接把上一题的dij改了改就交了 然后RE
反应过来这题有负环 想着怎么标记负环同时不直接结束spfa
看了别人的代码感叹了一下我还是太弱 多学习吧 =.=
想着懒得重写了直接把上一题的dij改了改就交了 然后RE
反应过来这题有负环 想着怎么标记负环同时不直接结束spfa
看了别人的代码感叹了一下我还是太弱 多学习吧 =.=
#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <queue> #include <vector> #include <set> #include <algorithm> #define INF 0x3F3F3F3F using namespace std; int busy[210], val[210][210]; int t, n, m, q, dist[210]; bool cir[210]; void spfa(int s) { int time[210]; bool vis[210]; queue<int> q; memset(vis, 0, sizeof vis); memset(time, 0, sizeof time); memset(dist, 0x3f, sizeof dist); dist[s] = 0; vis[s] = true; q.push(s); while(!q.empty()){ int u = q.front(); q.pop(); vis[u] = false; if(cir[u]) continue; for(int i = 1; i <= n; i++){ if(dist[i] > dist[u] + val[u][i]){ dist[i] = dist[u] + val[u][i]; if(!vis[i]){ q.push(i); if(time[i]++ > n) cir[i] = true; } } } } } int main() { scanf("%d", &t); for(int i = 1; i <= t; i++){ memset(val, 0x3f, sizeof val); memset(cir, 0, sizeof cir); scanf("%d", &n); for(int j = 1; j <= n; j++){ scanf("%d", &busy[j]); } scanf("%d", &m); for(int j = 1; j <= m; j++){ int s, d; scanf("%d%d", &s, &d); val[s][d] = (int)pow(busy[d] - busy[s], 3); } spfa(1); scanf("%d", &q); printf("Case %d:\n", i); while(q--){ int d; scanf("%d", &d); if(cir[d] || dist[d] < 3 || dist[d] == INF) puts("?"); else printf("%d\n", dist[d]); } } return 0; }
相关文章推荐
- PHP实现图片不变型裁剪及图片按比例裁剪的方法
- PHP实现QQ登录实例代码
- YII2 日志模块 之 使用数据库记录错误信息
- PHP 获取时间
- webstorm/phpstorm的Tab换4个空格
- webstorm/phpstorm的Tab换4个空格
- 接收PHP函数参数
- kuangbin_ShortPath N (POJ 1847)
- getpass使用
- Thinkphp 3.2 解决F写入配置文件的方法
- 流媒体学习之一些应该先了解的名词
- 85. php 绘图体系
- Windows开启NTP服务
- PHP会话管理
- 四大基本组件之ContentProvider
- PHP学习之数组
- 【杭电oj】1096 - A+B for Input-Output Practice (VIII)
- 【杭电oj】1093 - A+B for Input-Output Practice (V)
- 【杭电oj】1090 - A+B for Input-Output Practice (II)
- 【杭电oj】1091 - A+B for Input-Output Practice (III)(注意0,0结束输出)