博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白 stl map
阅读量:5285 次
发布时间:2019-06-14

本文共 1460 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
#include
#include
#include
using namespace std; #define INF 0x7f7f7f7f int N, cnt, beg, end, v; int g[155][155], res[155]; char s[33], e[33]; map
mp; struct Bus { int pos, val; Bus ( int x = 0, int y = 0 ) { pos=x, val=y; } bool operator < ( const Bus &t ) const { return val > t.val; } }; int getId ( char *p ) { if ( mp.count ( p ) == 0 ) { return mp[p] = cnt ++; } return mp[p]; } void init () { mp.clear (); cnt = 1; memset ( g, 0x7f, sizeof ( g ) ); memset ( res, 0x7f, sizeof ( res ) ); } bool read () { scanf ( "%d", &N ); if ( N == -1 ) return false; scanf ( "%s%s", s, e ); beg = getId ( s ); end = getId ( e ); for ( int i = 0; i < N; ++ i ) { scanf ( "%s%s%d", s, e, &v ); int x = getId ( s ), y = getId ( e ); g[x][y] = min ( g[x][y], v ); g[y][x] = min ( g[y][x], v ); } return true; } int DIS () { res[beg] = 0; priority_queue < Bus > q; q.push ( Bus ( beg, 0 ) ); while ( !q.empty () ) { Bus t = q.top (); q.pop (); if ( t.pos == end ) return t.val; for ( int i = 1; i < cnt; ++ i ) { if ( g[t.pos][i] != INF ) { if ( t.val + g[t.pos][i] < res[i] ) { res[i] = t.val + g[t.pos][i]; q.push ( Bus ( i, res[i] ) ); } } } } return -1; } void prs () { printf ( "%d\n", DIS () ); } int main() { while ( init(), read () ) { prs (); } return 0; }

转载于:https://www.cnblogs.com/tangcong/archive/2011/07/28/2119949.html

你可能感兴趣的文章
SQL Server数据库——数据库的数据导出与数据导入
查看>>
认识 service worker
查看>>
第五次团队作业:项目展示
查看>>
WIN10更新后,应用报“不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况”...
查看>>
C#面向对象(二):封装和继承
查看>>
range()函数
查看>>
cs20_3-3
查看>>
codevs1074 食物链
查看>>
少量标签下的模型
查看>>
17.python购物车程序作业
查看>>
lightoj 1027【数学概率】
查看>>
Apparmor——Linux内核中的强制访问控制系统
查看>>
HOJ-1005 Fast Food(动态规划)
查看>>
jQuery 杂项方法
查看>>
系出名门Android(4) - 活动(Activity), 服务(Service), 广播(Broadcast), 广播接收 器(BroadcastReceiver)...
查看>>
Dynamics CRM Microsoft SQL Server 指定的数据库具有更高的版本
查看>>
FasfDFS整合Java实现文件上传下载
查看>>
love2d教程5--摄相机1视角跟随玩家
查看>>
用Hadoop构建电影推荐系统
查看>>
Linux命令1——a
查看>>