codevs 1557 热浪
2016-10-10 06:51
316 查看
codevs 1557 热浪
就是求最短路问题。
题解1(spfa):
题解2(Dijkstra):
就是求最短路问题。
题解1(spfa):
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; const int maxn=6500*2;//双向边 struct cc{ int from,to,cost; }es[maxn]; int first[maxn],next[maxn]; int dis[maxn]; bool vis[maxn]; int tot=0; void build(int ff,int tt,int pp) { es[++tot]=(cc){ff,tt,pp}; next[tot]=first[ff]; first[ff]=tot; } queue<int>q; void spfa(int s) { dis[s]=0; q.push(s); vis[s]=1; while(!q.empty()) { int v=q.front(); q.pop(); vis[v]=0; for(int i=first[v];i;i=next[i]) { int u=es[i].to; if(dis[u]>dis[v]+es[i].cost) { dis[u]=dis[v]+es[i].cost; if(!vis[u]) { q.push(u); vis[u]=1; } } } } } int main() { memset(dis,63,sizeof(dis)); int t,c,ts,te; scanf("%d%d%d%d",&t,&c,&ts,&te); for(int i=1;i<=c;i++) { int rs,re,ci; scanf("%d%d%d",&rs,&re,&ci); build(rs,re,ci); build(re,rs,ci); } spfa(ts); printf("%d",dis[te]); return 0; }
题解2(Dijkstra):
#include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std; const int maxn=6500*2; struct cc{ int from,to,cost; }es[maxn]; int first[maxn],next[maxn]; bool vis[maxn]; struct edge{ int num,dis; }; bool operator < (edge a,edge b) { return a.dis>b.dis; } int tot=0; void build(int ff,int tt,int pp) { es[++tot]=(cc){ff,tt,pp}; next[tot]=first[ff]; first[ff]=tot; } int dis[maxn]; priority_queue<edge>q; void Dijkstra(int s) { dis[s]=0; q.push((edge){s,dis[s]}); while(!q.empty()) { edge v=q.top(); q.pop(); for(int i=first[v.num];i;i=next[i]) { int u=es[i].to; if(dis[u]>dis[v.num]+es[i].cost) { dis[u]=dis[v.num]+es[i].cost; q.push((edge){u,dis[u]}); } } } } int main() { memset(dis,63,sizeof(dis)); int T,C,Ts,Te; scanf("%d%d%d%d",&T,&C,&Ts,&Te); for(int i=1;i<=C;i++) { int rs,re,ci; scanf("%d%d%d",&rs,&re,&ci); build(rs,re,ci); build(re,rs,ci); } Dijkstra(Ts); printf("%d",dis[Te]); return 0; }
相关文章推荐
- codevs1557 热浪[SPFA模板]
- 【图论】CODE[VS] 1557 热浪 (SPFA模板)
- codevs1557 热浪(堆优化dijkstra)
- 【codevs1557】 热浪, Dijkstra算法入门
- Codevs 1557 热浪 解题报告
- 【最短路】CODE[VS] 1557 热浪 (Dijkstra模板)
- codevs 1557 热浪
- codevs 1557 热浪 SPFA 解题报告
- [codevs1557]热浪
- 【基础练习】【SPFA】codevs1557 热浪题解
- 最短路经典例题 codevs 1557 热浪
- Codevs_P1021 热浪(Dijkatra)
- Codevs 2833 奇怪的梦境
- vscode 调试控制台快捷键
- codevs 1078 最小生成树
- codevs天梯 装箱问题 水01背包
- codevs 5251 WYW的数字金字塔
- VS Code .vue文件代码缩进以及格式化代码
- codevs 天梯 单词接龙 DFS
- 大神的游戏(codevs 1353)