HDU-3768-Shopping(spfa+dfs)
来源:互联网 发布:ditto软件 编辑:程序博客网 时间:2024/05/29 18:20
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=3768
题意:给一个无向图,起点为0,从起点开始要走s个点再回到起点的最短路。
由于s<=10,可以先记录从一个点到另一个点的最短路径,然后在暴力枚举从0开始走这s个点的顺序。
最短路详见博客:http://blog.csdn.net/newproblems/article/details/76472749
AC代码
#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <string>#include <vector>#include <cmath>#include <queue>#include <stack>#include <map>#define inf 0x3f3f3f3f#define maxa 100010using namespace std;int n,m,s,dis[20][maxa],book[maxa],a[maxa];struct node{ int y,d; node (int _y,int _d) { y=_y,d=_d; }};vector < node > p[maxa] ;void add(int x,int y,int d){ p[x].push_back(node(y,d));}void spfa(int st){ memset(dis[st],inf,sizeof(dis[st])); memset(book,0,sizeof(book)); dis[st][a[st]]=0; book[a[st]]=1; queue<int> que; que.push(a[st]); while(!que.empty()) { int ss=que.front(); que.pop(); book[ss]=0; int l=p[ss].size(); for(int i=0; i<l; i++) { int v=p[ss][i].y,w=p[ss][i].d; if(dis[st][v]>dis[st][ss]+w) { dis[st][v]=dis[st][ss]+w; if(!book[v]) { que.push(v); book[v]=1; } } } }}int sum;void dfs(int x,int y,int t){ if(t==s) { sum=min(sum,y+dis[x][0]); return ; } for(int i=1; i<=s; i++) if(book[a[i]]==0) { book[a[i]]=1; dfs(i,y+dis[x][a[i]],t+1); book[a[i]]=0; }}int main(){ int T; cin >> T; while(T--) { scanf("%d %d",&n,&m); for(int i=0;i<n;i++) p[i].clear();//清空vector while(m--) { int x,y,d; scanf("%d %d %d",&x,&y,&d); add(x,y,d); add(y,x,d); } spfa(0); scanf("%d",&s); for(int i=1; i<=s; i++) { scanf("%d",&a[i]); spfa(i); } sum=inf; memset(book,0,sizeof(book)); dfs(0,0,0); printf("%d\n",sum); } return 0;}
阅读全文
2 0
- HDU-3768-Shopping(spfa+dfs)
- HDU 3768 Shopping spfa+dfs枚举
- spfa+枚举 hdu 3768 Shopping
- Shopping(SPFA+DFS HDU3768)
- hdu 3768 Shopping【SPFA+状压DP】
- hdu 3768 Shopping(DFS+最短路)
- HDU3768 Shopping 解题报告【SPFA预处理+dfs】
- hdu 3768 Shopping(最短路+排列组合)
- HDU 3768 Shopping
- HDU-3768Shopping
- HDU-3768-Shopping
- HDU 1142(SPFA+dfs+dp)
- POJ 3768 Shopping dfs+最短路
- HDU 2648 Shopping(map)
- HDU3768 Shopping(状态压缩DP+spfa)旅行商问题
- shopping(多次spfa求局部最短路)
- HDU 3768 Shopping 最短路+状压dp
- 【HDU】3768 Shopping 最短路+DP
- 微服务
- 统计难题 字典树
- solr的安装
- 正确理解并使用MySql索引
- java 剑指offer 第三题:输入一个链表,从尾到头打印链表每个节点的值。
- HDU-3768-Shopping(spfa+dfs)
- C语言初步知识与基本数据类型(下)
- Ueditor富文本编辑器替换去除自动追加p标签
- 扩展arcgis flex symbol 显示报表功能,显示饼状图和柱状图,非用infoSymbol实现(三)
- Eclipse与MyEclipse
- Spring Aop 报错error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator
- 性能测试常用的linux命令
- yii自带分页功能
- 2017 Multi-University Training Contest