hdu3768Shopping 最短路+暴力
来源:互联网 发布:部落冲突九本满防数据 编辑:程序博客网 时间:2024/04/30 09:54
//给一个无向图,其点为0,从起点开始要走s个点再回到起点的最短路//由于s<=10,可以先记录从一个点到另一个点的最短路径//然后在暴力枚举从0开始走这s个点的顺序#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std ;const int maxn = 100010 ;const int inf = 0x3f3f3f3f ;struct Edge{ int v ;int w ; int next ;}edge[maxn*10] ;int head[maxn] ;int dis[20][maxn] ;int vis[maxn] ;int nedge ;int a[maxn] ,num;int n , m ;void addedge(int u , int v , int w){ edge[nedge].v = v ; edge[nedge].w = w ; edge[nedge].next = head[u] ; head[u] = nedge++ ;}void spfa(int st){ queue<int> que ; memset(vis , 0 ,sizeof(vis)) ; for(int i = 0;i < n;i++) dis[st][i] = i == a[st] ? 0 : inf ; que.push(a[st]) ; vis[a[st]] = 1; while(que.size()) { int u = que.front() ; que.pop() ; vis[u] = 0 ; for(int i = head[u] ; i != -1 ;i = edge[i].next) { int v = edge[i].v ; if(dis[st][v] > dis[st][u] + edge[i].w) { dis[st][v] = dis[st][u] + edge[i].w ; if(!vis[v]) vis[v] = 1 , que.push(v) ; } } }}int ans = inf ;void dfs(int pos , int sum , int step){ if(step == num) { ans = min(ans , sum + dis[pos][0]) ; return ; } for(int i = 1;i <= num;i++) if(vis[a[i]])continue ; else { vis[a[i]] = 1; dfs(i , sum + dis[pos][a[i]] , step + 1) ; vis[a[i]] = 0 ; }}int main(){ //freopen("in.txt" , "r" , stdin) ; int t ; scanf("%d" ,&t) ; while(t--) { scanf("%d%d" , &n , &m) ; memset(head , -1 , sizeof(head)) ; nedge = 0 ; while(m--) { int u , v , w ; scanf("%d%d%d" , &u , &v ,&w) ; addedge(u , v , w) ; addedge(v , u , w) ; } scanf("%d" , &num) ; spfa(0) ; for(int i = 1;i <= num ; i++) scanf("%d" , &a[i]) , spfa(i) ; ans = inf ; memset(vis , 0 ,sizeof(vis)) ; dfs(0 , 0 , 0) ; cout<<ans<<endl; }}
0 0
- hdu3768Shopping 最短路+暴力
- poj 3009 dfs暴力解决最短路
- Hdu 5636 Shortest Path【最短路+暴力】
- Codeforces 543B. Destroying Roads 最短路+暴力
- HAUT 1262 魔法宝石 (最短路变形 or 暴力)
- hdu 2363 Cycling (最短路spfa + 暴力枚举)
- Codeforces 666B World Tour 暴力最短路
- C++ 求矩阵最短路问题最简单最暴力的dp解法
- uva 216 Getting in Line 最短路,全排列暴力做法
- sdutoj3363 数据结构实验之图论七:驴友计划 (暴力最短路+限制条件)
- 最短路 & 次短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- HDU5119.Happy Matt Friends
- H.264码流结构
- EQueue - 一个C#写的开源分布式消息队列的总体介绍
- 21.View,Label,Button,TextField
- windows下解决快捷键失效的万能方法
- hdu3768Shopping 最短路+暴力
- ios 给label添加横线
- Elasticsearch+Logstash+Kibana配置
- POJ 2452 (RMQ + 二分)
- EQueue - 详细谈一下消息持久化以及消息堆积的设计
- UE4与WEB服务器交互(json)
- android 占位符使用
- Android 5.0(L) 的MediaSession架构分析(转载)
- 客户端和服务器通讯 方法(2)