hdu 6166(随机概率dijkstra)
来源:互联网 发布:js文件加载失败 编辑:程序博客网 时间:2024/05/27 14:12
题意:要你在一个图指定点钟找出两个距离最短的点
分析:枚举 位数, 使包含当前位数的为一个集合,不包含的为另一个集合,跑dijkstra
#include <cstdio>#include <queue>#include <algorithm>#include <cstring>#include <vector>#include <iostream>using namespace std;#define maxn 100400#define INF (1<<30)typedef long long int ll;typedef pair<int,int> P;int T;int n , m;bool vis[maxn];vector<P>E[maxn];int ans;int k ;int kx[maxn];bool mark[maxn];int d[maxn];priority_queue<P,vector<P>,greater<P> >Q;int dijkstra(){ while( !Q.empty() ) { int c = Q.top().first; int u = Q.top().second; Q.pop(); if( !mark[u] && vis[u] ){ return c; } if( c > d[u] )continue; for(int i = 0 ; i < E[u].size() ; ++i) { int v = E[u][i].first; int w = E[u][i].second; if(d[v] > d[u] + w) { d[v] = d[u] + w; Q.push(P(d[v],v)); } } } return 1e9;}void init(){ while(!Q.empty())Q.pop(); for(int i = 0 ; i <= n ; ++i)d[i] = INF; for(int i = 1 ; i <= n ; ++i)if( mark[i] )d[i] = 0 , Q.push(P(0,i));}int main(){ cin >> T; int cas = 0; while( T-- ) { cin >> n >> m; memset(vis,0,sizeof(vis)); for(int i = 0 ; i <= n ; ++i)E[i].clear(); for(int i = 0 ; i < m ; ++i) { int a,b,c; scanf("%d %d %d",&a,&b,&c); E[a].push_back(P(b,c)); } cin >> k; for(int i = 0; i < k ; ++i)scanf("%d",kx+i),vis[kx[i]] = 1; printf("Case #%d: ",++cas); ans = 1e9; for(int i = 1 ; i < 20 ; ++i) { memset(mark,0,sizeof(mark)); for(int j = 0 ; j < k ; ++j){ if( kx[j] & ( 1 << i ) ){ mark[kx[j]] = 1; } } init(); ans = min( ans , dijkstra() ); memset(mark,0,sizeof(mark)); for(int j = 0 ; j < k ; ++j){ if( !( kx[j] & ( 1 << i ) ) ){ mark[kx[j]] = 1; } } init(); ans = min( ans , dijkstra() ); } cout << ans << endl; }}
阅读全文
0 0
- hdu 6166(随机概率dijkstra)
- [hdu 6166 Senior Pan]Dijkstra+概率随机
- 随机事件和概率
- 随机概率发生器
- 随机概率发生器
- 概率随机问题
- (转)概率随机问题
- 概率随机问题
- 概率随机问题
- 随机概率问题全集
- 随机概率数
- 概率随机问题
- 随机事件与概率
- 概率随机物品
- 游戏中的随机概率
- 随机概率算法
- 等概率随机函数
- 随机事件、概率、随机变量
- jquery validate (jquery 验证的三种方式)
- 微擎框架 页面 功能 与代码对应记录
- 一个基于ffmpeg+QT的视频播放器
- Js slice()方法与substr和substring的区别
- 基于ISO镜像构建Yum本地源
- hdu 6166(随机概率dijkstra)
- 彻底弄懂css中单位px和em,rem的区别
- JSON.stringify(),JSON.parse(),toJSON()方法使用
- 挑战程序竞赛系列(61):4.6平面上的分治法(1)
- matplotlib坐标轴中文乱码问题解决
- 状态管理工具vuex初识
- solr查询条件过多异常
- DrawerLayout侧拉菜单+TabLayou导航栏
- WPF实现半透明背景的弹框