hdu6181Two Paths(次短路模板题)
来源:互联网 发布:linux ext3 ext4 区别 编辑:程序博客网 时间:2024/06/08 04:09
思路:
裸的次短路题,多校的时候直接网上找了个模板,改了改范围和变量类型就1a了,看来很好用,直接盗取了=。=
代码:
#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>#include <string.h>#include <string>#include <vector>#include <queue>#define MEM(a,x) memset(a,x,sizeof a)#define eps 1e-8#define MOD 10009#define MAXN 100010#define MAXM 100010#define INF 0x3f3f3f3f#define INFF 0x3f3f3f3f3f3f3f3f#define ll long long#define bug cout<<"here"<<endl#define fread freopen("ceshi.txt","r",stdin)#define fwrite freopen("out.txt","w",stdout)using namespace std;struct Edge{ int v,next; ll w;}edge[MAXM*2];ll d[MAXN],rd[MAXN];int tot,head[MAXN];int vis[MAXN];int n,m;void init(){ tot=0; MEM(head,-1); for(int i=0;i<=n;i++) d[i]=rd[i]=INFF;}void addedge(int u,int v,ll w){ edge[tot].v=v; edge[tot].w=w; edge[tot].next=head[u]; head[u]=tot++;}void SPFA(int s,ll dis[]){ int u,v; queue<int> q; MEM(vis,0); dis[s]=0; vis[s]=1; q.push(s); while(!q.empty()) { u=q.front(); q.pop(); vis[u]=0; for(int i=head[u];i!=-1;i=edge[i].next) { v=edge[i].v; if(dis[u]+edge[i].w<dis[v]) { dis[v]=dis[u]+edge[i].w; if(!vis[v]) { vis[v]=1; q.push(v); } } } }}int main(){// fread; int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); init(); while(m--) { int u,v; ll w; scanf("%d%d%lld",&u,&v,&w); addedge(u,v,w); addedge(v,u,w); } SPFA(1,d); SPFA(n,rd); ll ans=INFF; for(int i=1;i<=n;i++) { for(int j=head[i];j!=-1;j=edge[j].next) { int v=edge[j].v; ll w=edge[j].w; ll tmp=d[i]+rd[v]+w; if(tmp>d[n]&&ans>tmp) ans=tmp; } } printf("%lld\n",ans); } return 0;}
阅读全文
1 0
- hdu6181Two Paths(次短路模板题)
- hdu6181Two Paths-(次短路)
- hdu6181Two Paths(第十场-dij求次短路)
- HDU 6181 Two Paths【次短路】【模板题】
- hdu6181 Two Paths 次短路模板
- hdu Two Paths 次短路模板 (可往回走)
- hdu6181-启发式搜索A*|次短路模板|最短路枚举-Two Paths
- HDU6181 Two Paths【次短路】
- POJ3255次短路模板
- 次短路模板
- hdu6181 How Many Paths Are There(次短路条数[模板])
- HDU 6181 Two Paths (次短路)
- hdu 6181 Two Paths (次短路)
- hdu 6181 Two Paths(次短路)
- Hdu 6181 Two Paths【次短路】
- hdu-6181 Two Paths次短路
- HDU 6181 Two Paths 次短路
- hdu 6181 Two Paths (次短路)
- sql面试题及答案总结
- 剑指Offer—38—二叉树的深度
- 51nod 2006 飞行员配对(二分图最大匹配)
- 不具参考价值--struts2 那个啥
- 位运算实现两个整数的加法运算
- hdu6181Two Paths(次短路模板题)
- Spring笔记-通过Spring的配置文件来配置bean
- Salty Fish
- Path Sum,Path Sum II,Path Sum III总结
- 并发编程-synchronized的实现原理和应用
- 最大差值(贪心)
- maven 自动部署 tomcat
- Android studio 单独设置Logcat字体大小,单独设置代码编辑区字体大小
- matlab2c使用c++实现matlab函数系列教程-hankel函数