poj3268(dijkstra算法变形)
来源:互联网 发布:linux yum安装rpm包 编辑:程序博客网 时间:2024/04/29 14:33
D - Silver Cow Party
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road i requires Ti (1 ≤ Ti ≤ 100) units of time to traverse.
Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow's return route might be different from her original route to the party since roads are one-way.
Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?
Lines 2.. M+1: Line i+1 describes road i with three space-separated integers:Ai, Bi, and Ti. The described road runs from farm Ai to farm Bi, requiring Titime units to traverse.
4 8 21 2 41 3 21 4 72 1 12 3 53 1 23 4 44 2 3
10
好题,有向图,1——n个点 输入其中一个点x,求x点到其他点的距离和其他点到x的距离之和最短 ,一开始果断用了floyd结果超时了尝试了两次迪杰斯特拉,。。。结果居然过了不明觉厉,先用迪杰斯特拉求出x到其他所有点的距离之和,再把map[i][j]和map[j][i]swap一下就变成了从其他点到x了。很经典的迪杰斯特拉变形。贴上代码:
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;const int inf=999999;int dis[1055];int vis[1055];int mp[1055][1555];int n,m;int arr[1055]={0};void dijkstra(int bg,int en){memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++) dis[i]=mp[bg][i];int minn,pos;for(int i=1;i<=n;i++){ minn=inf; for(int j=1;j<=n;j++){ if(!vis[j]&&dis[j]<minn){ pos=j; minn=dis[j];}}vis[pos]=1;for(int j=1;j<=n;j++){ if(!vis[j]) dis[j]=min(dis[j],dis[pos]+mp[pos][j]);}}for(int i=1;i<=n;i++){ arr[i]+=dis[i];}} int main(){ int x;scanf("%d%d%d",&n,&m,&x);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(i==j) mp[i][j]=0; else mp[i][j]=inf;} memset(arr,0,sizeof(arr)); int a,b,c; while(m--){ scanf("%d%d%d",&a,&b,&c); mp[a][b]=c; } dijkstra(x,n); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) swap(mp[i][j],mp[j][i]); dijkstra(x,n); int sum=0; for(int i=1;i<=n;i++) sum=max(sum,arr[i]); cout<<sum<<endl; }
- poj3268(dijkstra算法变形)
- poj3268(单源最短路,dijkstra算法)
- POJ3268(Dijkstra)
- poj3268(最短路,dijkstra)
- 最短路径(4)--poj3268(dijkstra单源最短路径变形)
- poj3268--dijkstra算法的灵活应用
- poj3268牛的来回最短时(dijkstra)
- 【高手回避】poj3268,一道很水的dijkstra算法题
- poj3268 Silver Cow Party 单源最短路径dijkstra算法
- hdu 2851 dijkstra算法变形
- Emergency (dijkstra 变形)
- POJ3268基本的Dijkstra
- 最短路 dijkstra---poj3268
- poj3268~Silver Cow Party(dijkstra+路径反转)
- POJ 3255 Roadblocks Dijkstra 算法变形
- 天梯地图(Dijkstra变形)
- poj 1797(dijkstra变形)
- POJ3268 Silver Cow Party 【Dijkstra】
- Tomcat配置环境变量(Window系统)
- FPGA视频处理
- jQuery学习(二)-常规选择器
- 快速排序算法
- ToolBar下面放置一个TabLayout踩过的坑
- poj3268(dijkstra算法变形)
- centos系统上mysql5.6.12版本安装
- 回忆一下const相关内容
- 《ACM程序设计》书中题目 K
- redis——redis安装、启动、停止
- js函数实现
- TCP通信之三次握手四次挥手
- 广播的优先级和处理方法
- Hiernate概述