poj 3268 Silver Cow Party
来源:互联网 发布:java按钮打开新窗口 编辑:程序博客网 时间:2024/06/05 04:50
题意:
题目给定点X 求点X到任意其他一点Y的最短距离和Y到X的最短距离之和的最大值
自己掌握的算法太少
我的方法就是两次dijkstra算法 因为是有向图 dijkstra可以倒着算
1.一次以X为起点求X到任意一点的最小值
2.第二次以X为终点求任意一点到X的最小值
两次得到的数组相加取得最大值即可
#include "stdio.h"#include "stdlib.h"#include "string.h"#define error 9999999int map[1001][1001],low[1001],low1[1001];int n,m,x;void dijskral(int st) // 求X到任意一点的最短距离 { int vis[1001]; memset(vis,0,sizeof(vis)); for(int i=0;i<=n;i++) low[i]=map[st][i]; vis[st]=1; while(1) { int min=error,pos; for(int i=0;i<=n;i++) if(vis[i]!=1&&low[i]<min){ min=low[i]; pos=i; } if(min==error) break; vis[pos]=1; for(int i=0;i<=n;i++) { if(vis[i]!=1) if(low[pos]+map[pos][i]<low[i]) low[i]=low[pos]+map[pos][i]; } }}void dijskral2(int st) // 求任意一点到X的最短距离 { int vis[1001]; memset(vis,0,sizeof(vis)); for(int i=0;i<=n;i++) low1[i]=map[i][st]; vis[st]=1; while(1) { int min=error,pos; for(int i=0;i<=n;i++) if(vis[i]!=1&&low1[i]<min){ min=low1[i]; pos=i; } if(min==error) break; vis[pos]=1; for(int i=0;i<=n;i++) { if(vis[i]!=1) if(low1[pos]+map[i][pos]<low1[i]) low1[i]=low1[pos]+map[i][pos]; } }}int main(){ int max=0; scanf("%d%d%d",&n,&m,&x); for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) map[i][j]=error; for(int i=0;i<m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); map[a][b]=c; } dijskral(x); dijskral2(x); for(int i=0;i<=n;i++) { low[i]+=low1[i]; if(low[i]<error&&low[i]>max) max=low[i]; } printf("%d\n",max);}
0 0
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268--Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- 数据挖掘 K-Means++聚类算法
- c++对象模型的初步理解
- unity3d中的碰撞系统
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
- leetcode系列(11)二叉树翻转 Invert Binary Tree
- poj 3268 Silver Cow Party
- 【2-3】Java 中的原生数据类型
- QTabWidget 双击增加tab页
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
- 非线性结构之二叉树
- 【bzoj4033】 T1 树形dp
- 虚幻4蓝图:流程控制(一)
- leetcode 010 —— Regular Expression Matching(hard)
- [华为机试真题]72.操作系统任务调度问题