PAT1030. Travel Plan
//晴神模板,dij+dfs,貌似最近几年PAT的的图论大体都这么干的,现在还在套用摸板阶段。。。。估计把这及格图论题题搞完,dij,dfs,并查集就掌握差不多了(模板还差不多)为何bfs能自己干出来,dfs就各种跪。。。。感觉需要把图论的经典算法都码一遍,才能有更深的理解,现在只是浅表
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=501;
const int INF=1<<30;
int n,m,st,ed,g[maxn][maxn],cost[maxn][maxn];
bool vis[maxn]={false};
int dist[maxn],mincost=INF;
vector<int >pre[maxn];
vector<int>path,tmppath;
void dij(int s)
{
int i,j;
fill(dist,dist+maxn,INF);
for(i=0;i<n;i++)pre[i].push_back(i);
dist[s]=0;
for(i=0;i<n;i++)
{
int min=INF,u=-1;
for(j=0;j<n;j++)
{
if(!vis[j]&&dist[j]<min)
{
min=dist[j];
u=j;
}
}
if(u==-1)return ;
vis[u]=true;
for(int v=0;v<n;v++)
{
if(!vis[v]&&g[u][v]!=INF)
{
if(dist[v]>dist[u]+g[u][v])
{
dist[v]=dist[u]+g[u][v];
pre[v].clear();
pre[v].push_back(u);
}
else if(dist[v]==dist[u]+g[u][v])pre[v].push_back(u);
}
}
}
}
void dfs(int v)
{
int i;
if(v==st)
{
tmppath.push_back(v);
int tmpcost=0;
for(i=tmppath.size()-1;i>0;i--)
{
int cur=tmppath[i],next=tmppath[i-1];
tmpcost+=cost[cur][next];
}
if(tmpcost<mincost)
{
mincost=tmpcost;
path=tmppath;
}
tmppath.pop_back();
return ;
}
tmppath.push_back(v);
for(i=0;i<pre[v].size();i++)dfs(pre[v][i]);
tmppath.pop_back();
}
int main()
{
freopen("input.txt","r",stdin);
while(scanf("%d%d%d%d",&n,&m,&st,&ed)!=EOF)
{
int i,a,b;
fill(g[0],g[0]+maxn*maxn,INF);
fill(cost[0],cost[0]+maxn*maxn,INF);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
scanf("%d%d",&g[a][b],&cost[a][b]);
g[b][a]=g[a][b];
cost[b][a]=cost[a][b];
}
dij(st);
dfs(ed);
for(i=path.size()-1;i>=0;i--)
printf("%d ",path[i]);
printf("%d %d\n",dist[ed],mincost);
}
return 0;
}
PAT1030. Travel Plan的更多相关文章
- PAT1030 Travel Plan (30)---DFS
(一)题意 题目链接:https://www.patest.cn/contests/pat-a-practise/1030 1030. Travel Plan (30) A traveler's ma ...
- PAT-1030 Travel Plan (30 分) 最短路最小边权 堆优化dijkstra+DFS
PAT 1030 最短路最小边权 堆优化dijkstra+DFS 1030 Travel Plan (30 分) A traveler's map gives the distances betwee ...
- PAT1030. Travel Plan (30)
#include <iostream> #include <limits> #include <vector> using namespace std; int n ...
- PAT 1030 Travel Plan[图论][难]
1030 Travel Plan (30)(30 分) A traveler's map gives the distances between cities along the highways, ...
- 1030 Travel Plan (30 分)
1030 Travel Plan (30 分) A traveler's map gives the distances between cities along the highways, toge ...
- [图算法] 1030. Travel Plan (30)
1030. Travel Plan (30) A traveler's map gives the distances between cities along the highways, toget ...
- PAT_A1030#Travel Plan
Source: PAT A1030 Travel Plan (30 分) Description: A traveler's map gives the distances between citie ...
- PAT 甲级 1030 Travel Plan (30 分)(dijstra,较简单,但要注意是从0到n-1)
1030 Travel Plan (30 分) A traveler's map gives the distances between cities along the highways, to ...
- HDU 4014 Jimmy’s travel plan(图计数)
Jimmy’s travel plan Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
随机推荐
- 7. redis优化
一. redis使用上的优化 精简键名和键值 键名:尽量精简,但是也不能单纯为了节约空间而使用不易理解的键名. 键值:对于键值的数量固定的话可以使用0和1这样的数字来表示,(例如:male/femal ...
- android的m、mm、mmm编译命令
android的m.mm.mmm编译命令的使用 android源码目录下的build/envsetup.sh文件,描述编译的命令 - m: Makes from the top of th ...
- DBA_Oracle Event等待事件分析(概念)
2014-12-18 Created By BaoXinjian
- [MySQL] 同步一张表、复制过滤设置
一.缘由 据测试要求,需要把线上一张股票信息的表实时同步到测试环境,那么干吧,这次不复制库,单独复制表. 二.解决办法 可以按照同步(复制)库的方法来,在salve端设置 my.cnf,replica ...
- Expert C# 5.0中的Linq部分
1.先看看.NET中的Linq 2.扩展方法 3.Lambda表达式和表达式树 4.Linq中的延迟操作 5.Linq中的查询方法 5.1分割操作 5.2连接操作 5.3排序操作 5.4分组和连接 5 ...
- 离线使用echarts及一些细节
最近要做图表,用js起来太麻烦,所以就找些开源的库来用,发现echarts挺不错, echarts的文档把所有东西都说的很明白了,直接下载zip包,要是想离线使用的话只需要引用下载包里面的dist文件 ...
- [Flex] PopUpButton系列 —— 设置弹出菜单与主按钮之间的间隔
<?xml version="1.0" encoding="utf-8"?><!--设置弹出菜单与主按钮之间的间隔 PopUpButtonPo ...
- [Flex] PopUpButton系列 —— 将DataGrid作为弹出内容
<?xml version="1.0" encoding="utf-8"?> <!--Flex中如何创建一个可以弹出DataGrid作为菜单的 ...
- 解决 aspx 页面 TextBox 不支持 type="number"
安装 framework 4 并且打上补丁 Microsoft .NET Framework 4 可靠性更新 1 (KB2533523) https://www.microsoft.com/zh-cn ...
- 2015 Multi-University Training Contest 6 Cake
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m soda and today i ...