hdu 4171 最短路
来源:互联网 发布:淘宝uv在哪里看 编辑:程序博客网 时间:2024/06/05 19:11
#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
using namespace std;
#define inf 1000000000
#define N 110000
struct node {
int u,v,w,next;
}bian[N*2];
int head[N],yong,mindistance[N],n,visit[N],countt[N];
void addedge(int u,int v,int w) {
bian[yong].u=u;
bian[yong].v=v;
bian[yong].w=w;
bian[yong].next=head[u];
head[u]=yong++;
}
void min_spfa(int cur) {
int i;
for(i=0;i<=n;i++) {
mindistance[i]=inf;
visit[i]=0;
countt[i]=0;//原来在c++中的某些关键字不能乱用比如说count之类
}
visit[cur]=1;
queue<int>q;
q.push(cur);
mindistance[cur]=0;
while(!q.empty()) {
cur=q.front();
q.pop();
for(i=head[cur];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(mindistance[v]>mindistance[cur]+bian[i].w) {
mindistance[v]=mindistance[cur]+bian[i].w;
if(!visit[v]) {
if(++countt[v]>n)
return ;
visit[v]=1;
q.push(v);
}
}
}
visit[cur]=0;
}
return ;
}
int main() {
int i,a,b,c,dis[N],sum,minsum;
while(scanf("%d",&n)!=EOF) {
yong=0;
memset(head,-1,sizeof(head));
for(i=0;i<=n;i++)
scanf("%d",&dis[i]);
sum=0;
for(i=0;i<n;i++) {
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
addedge(b,a,c);
sum=sum+c*2;
}
min_spfa(0);
minsum=sum+dis[0];
for(i=1;i<=n;i++) {
if(minsum>sum-mindistance[i]+dis[i])
minsum=sum-mindistance[i]+dis[i];
}
printf("%d\n",minsum);
}
return 0;
}
#include<string.h>
#include<queue>
#include<iostream>
using namespace std;
#define inf 1000000000
#define N 110000
struct node {
int u,v,w,next;
}bian[N*2];
int head[N],yong,mindistance[N],n,visit[N],countt[N];
void addedge(int u,int v,int w) {
bian[yong].u=u;
bian[yong].v=v;
bian[yong].w=w;
bian[yong].next=head[u];
head[u]=yong++;
}
void min_spfa(int cur) {
int i;
for(i=0;i<=n;i++) {
mindistance[i]=inf;
visit[i]=0;
countt[i]=0;//原来在c++中的某些关键字不能乱用比如说count之类
}
visit[cur]=1;
queue<int>q;
q.push(cur);
mindistance[cur]=0;
while(!q.empty()) {
cur=q.front();
q.pop();
for(i=head[cur];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(mindistance[v]>mindistance[cur]+bian[i].w) {
mindistance[v]=mindistance[cur]+bian[i].w;
if(!visit[v]) {
if(++countt[v]>n)
return ;
visit[v]=1;
q.push(v);
}
}
}
visit[cur]=0;
}
return ;
}
int main() {
int i,a,b,c,dis[N],sum,minsum;
while(scanf("%d",&n)!=EOF) {
yong=0;
memset(head,-1,sizeof(head));
for(i=0;i<=n;i++)
scanf("%d",&dis[i]);
sum=0;
for(i=0;i<n;i++) {
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
addedge(b,a,c);
sum=sum+c*2;
}
min_spfa(0);
minsum=sum+dis[0];
for(i=1;i<=n;i++) {
if(minsum>sum-mindistance[i]+dis[i])
minsum=sum-mindistance[i]+dis[i];
}
printf("%d\n",minsum);
}
return 0;
}
0 0
- hdu 4171 最短路
- HDU 4171 bfs&&最短路
- 最短路 2544hdu
- HDU 2544 最短路
- hdu 1245 最短路
- HDU最短路总结
- hDU 最短路
- hdu 1874 (最短路)
- hdu 2112 (最短路)
- HDU-2544 最短路
- Hdu-2544 最短路
- hdu 2066 最短路
- HDU 2544 最短路
- 最短路 hdu
- hdu 2544 最短路
- HDU 2544 ( 最短路 )
- hdu 2544 最短路
- HDU 2544 最短路
- 天下难事,必作于易
- UItableView用法
- Python计算一个项目中含有的代码行数
- OpenGL——点的绘制(使用OpenGL来绘制可旋转坐标系的螺旋线)
- Android读取framebuffer截屏
- hdu 4171 最短路
- MVCpager 分页 实例
- 第7周作业-while循环判断
- 查看gcc的默认宏定义命令
- data source explorer/database browser / database explorer 配置与数据库的连接
- XML文档节点操作
- (旧,废弃)游戏架构 云游戏(2)-网络环境问题
- Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...
- Java通过poi组件usermodel读取Excel