kuangbin_ShortPath N (POJ 1847)
2016-01-13 23:53
585 查看
模板题辣很简单的 只有两种val 0 和1
#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <queue> #include <vector> #include <set> #include <algorithm> #define INF 0x3F3F3F3F using namespace std; typedef pair<int, int> pii; struct cmp{ bool operator () (const pii a, const pii b){ return a.first > b.first; } }; int val[110][110]; int n, a, b; int dij() { int dist[110]; priority_queue<pii, vector<pii>, cmp> q; memset(dist, 0x3f, sizeof dist); dist[a] = 0; q.push(make_pair(0, a)); while(!q.empty()){ pii u = q.top(); q.pop(); //printf("u.second = %d\n", u.second); if(u.first > dist[u.second]) continue; for(int i = 1; i <= n; i++){ if(dist[i] > dist[u.second] + val[u.second][i]){ dist[i] = dist[u.second] + val[u.second][i]; q.push(make_pair(dist[i], i)); } } } return dist[b] == INF ? -1 : dist[b]; } int main() { memset(val, 0x3f, sizeof val); scanf("%d%d%d", &n, &a, &b); for(int i = 1; i <= n; i++){ int m, to; scanf("%d", &m); if(m == 0) continue; m--; scanf("%d", &to); val[i][to] = 0; while(m--){ scanf("%d", &to); val[i][to] = 1; } } printf("%d\n", dij()); return 0; }
相关文章推荐
- 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结束输出)
- thinkphp php审核后返回信息给html
- thinkphp源码解析 (Version 3.1) -2 /Lib/Core/Think.class
- php的json校验json-schema
- php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
- Laravel 传递数据到视图
- Atitit.导出excel报表的设计与实现java .net php 总
- Atitit.导出excel报表的设计与实现java .net php 总
- Atitit.导出excel报表的设计与实现java .net php 总结