[CQOI2005]新年好

2023-10-29 08:18
文章标签 新年好 cqoi2005

本文主要是介绍[CQOI2005]新年好,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[CQOI2005]新年好

  • 1.问题分析
  • 2.具体代码
  • 3.总结

题目链接

1.问题分析

数据被加强了就很烦,最后用堆优化dijkstra才能过。
最短路+爆搜。需要注意的细节还是比较多的。

2.具体代码

#include <bits/stdc++.h>using namespace std;const int N = 50010,M = 2e5+10,INF = 0x3f3f3f3f;typedef pair<int ,int > PII;
#define x first
#define y secondint n,m;
int s[6];
int h[N],e[M],ne[M],w[M],idx;
int d[6][N];
bool st[N];
void add(int a,int b,int v)
{e[idx]=b;w[idx]=v;ne[idx]=h[a];h[a]=idx++;
}void dijkstra(int start,int d[])
{priority_queue<PII,vector<PII>,greater<PII> > heap;memset(d,0x3f,N * 4);d[start]=0;memset(st,false,sizeof st);heap.push({0,start});while(heap.size()){auto t = heap.top();heap.pop();if(st[t.y]) continue;st[t.y]=1;for (int i = h[t.y]; ~i; i = ne[i]){int j = e[i];if (d[j] > d[t.y] + w[i]){d[j] = d[t.y] + w[i];heap.push({d[j], j});}}}
}int dfs(int u,int start,int dis)
{if(u>5)    return dis;int res=INF;for(int i=1;i<=5;i++){if(!st[i]){st[i]=1;res=min(res,dfs(u+1,i,dis+d[start][s[i]]));st[i]=0;}}return res;
}
int main()
{cin>>n>>m;memset(h,-1,sizeof h);s[0]=1;for(int i=1;i<=5;i++)scanf("%d",&s[i]);while(m--){int a,b,v;scanf("%d%d%d",&a,&b,&v);add(a,b,v),add(b,a,v);}for(int i=0;i<=5;i++)dijkstra(s[i],d[i]);memset(st,0,sizeof st);cout<<dfs(1,0,0)<<endl;return 0;
}

3.总结

注意双向边,边的容量乘2.
“关于SPFA,它死了。”

这篇关于[CQOI2005]新年好的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299406

相关文章

Java:2016新年好!

近些日子在闲下来的时候也开始了Java之路,在看J2SE的视频的时候,觉得熟悉,毕竟这一块的知识在原来软考的时候看见过。但是当时很多的东西知识匆匆的走了一遍,并没有留下什么东西。                 下面说说自己在开始Java之路,遇上的一些美好的插曲吧。                  就我目前而言,暂时还不了解Java这门语言的魅力所在,如果谁能

CQOI新年好

CQOI新年好                                              重庆城里有n个车站,m条双向公路连接其中的某些车站。每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。在一条路径上花费的时间等于路径

新年好!腾源虎给您拜年啦~

欢迎关注「腾源会」公众号,期待你的「在看」哦~👇

洛谷P5764 新年好(dijkstra堆优化+DFS)

重庆城里有 nn 个车站,mm 条 双向 公路连接其中的某些车站。   每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。 在一条路径上花费的时间等于路径上所有公路需要的时间之和。 佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。 过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送

【算法】新年好(堆优化dijkstra)

题目          重庆城里有 n 个车站,m 条 双向 公路连接其中的某些车站。         每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。         在一条路径上花费的时间等于路径上所有公路需要的时间之和。         佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。

【算法】新年好(堆优化dijkstra)

题目          重庆城里有 n 个车站,m 条 双向 公路连接其中的某些车站。         每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。         在一条路径上花费的时间等于路径上所有公路需要的时间之和。         佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。

大家新年好 Happy Python Year

转载于:https://www.cnblogs.com/balian/archive/2013/02/16/2913274.html

c++新年好和通信路线(acwing)

第一个问题在于枚举 先看题目: 重庆城里有 n个车站,m 条 双向 公路连接其中的某些车站。 每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。 在一条路径上花费的时间等于路径上所有公路需要的时间之和。 佳佳的家在车站 11,他有五个亲戚,分别住在车站 a,b,c,d,e。 过年了,他需要从自己的家出发,拜访每个