POJ 3268 Silver Cow Party (Dijkstra + 优先队列)
题意:由n个牧场,编号1到n。每个牧场有一头牛。现在在牧场x举办party,每头牛都去参加,然后再回到自己的牧场。牧场之间会有一些单向的路。每头牛都会让自己往返的路程最短。问所有牛当中最长的往返路程是多少。
思路:n最多到1000,floyd肯定超时。可以这样做,把图中所有的边先存起来,然后第一次用dijkstra求出以x为源点到每个点的最短距离。该最短距离为每头牛回家时的最短距离。然后建个新的图,将之前存的边反向加入图中。如之前有条从5到8距离为2的路,则此时向图中添加的边为从8到5距离为2的边。这样再次以x为源点求到每个点的最短距离,将两者相加,就是每头牛往返的最短距离了。求其中的最大值即可。
代码中的dijkstra算法用优先队列进行了优化。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#define maxn 1010
#define maxp 100010
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int v, w, next;
node(){}
node(int a,int b){v = a; w = b;}
bool operator < (const node &cmp) const
{
if (w == cmp.w) return v < cmp.v;
else return w > cmp.w;
}
}edge[maxp];
int num_edge, head[maxn];
void init_edge()
{
num_edge = ;
memset(head, -, sizeof(head));
}
void addedge(int a,int b,int w)
{
edge[num_edge].v = b;
edge[num_edge].w = w;
edge[num_edge].next = head[a];
head[a] = num_edge++;
}
int n, m, x, dis1[maxn], dis2[maxn];
void dijkstra(int s, int dis[])
{
for (int i = ; i <= n; i++)
dis[i] = (i == s ? : inf);
priority_queue<node> q;
q.push(node(s, dis[s]));
while (!q.empty())
{
node u = q.top(); q.pop();
for (int i = head[u.v]; i != -; i = edge[i].next)
{
int v = edge[i].v;
if (dis[v] > u.w + edge[i].w)
{
dis[v] = u.w + edge[i].w;
q.push(node(v, dis[v]));
}
}
}
}
int e[maxp][];
int main()
{
//freopen("data.in", "r", stdin);
scanf("%d%d%d",&n, &m, &x);
{
init_edge();
for (int i = ; i < m; i++)
{
scanf("%d%d%d",&e[i][],&e[i][],&e[i][]);
addedge(e[i][], e[i][], e[i][]);
}
dijkstra(x, dis1);
init_edge();
for (int i = ; i < m; i++)
addedge(e[i][], e[i][], e[i][]);
dijkstra(x, dis2);
int tmax = -inf;
for (int i = ; i <= n; i++)
tmax = max(tmax, dis1[i] + dis2[i]);
printf("%d", tmax);
}
return ;
}
POJ 3268 Silver Cow Party (Dijkstra + 优先队列)的更多相关文章
- POJ 3268 Silver Cow Party (Dijkstra)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13982 Accepted: 6307 ...
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...
- POJ 3268 Silver Cow Party (最短路径)
POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...
- POJ 3268 Silver Cow Party (双向dijkstra)
题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- POJ 3268 Silver Cow Party 最短路
原题链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- POJ 3268——Silver Cow Party——————【最短路、Dijkstra、反向建图】
Silver Cow Party Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...
- POJ 3268 Silver Cow Party (最短路dijkstra)
Silver Cow Party 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/D Description One cow fr ...
- POJ 3268 Silver Cow Party (Dijkstra)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions:28457 Accepted: 12928 ...
随机推荐
- jni 调用
Event 0 on null Unexpected event 0 on /storage/emulated/0/Books/null
- POI-java下载excel-HSSFWorkbook
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Python框架之Django学习笔记(十五)
表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱.本次内容将介绍如何用Django对用户通过表单提交的数据进行访问 ...
- 35、键盘布局的tableLayout备份
<TableLayout android:layout_width="wrap_content" android:layout_height="wrap_conte ...
- java包、类、方法、属性、常量命名规则
必须用英文,不要用汉语拼音 1:包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名.比如www.sohu.com 对于包名:每个字母都需 ...
- Leetcode 643.子数组最大平均数I
子数组最大平均数I 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示例 1: 输入: [1,12,-5,-6,50,3], k = 4 输出: 12.75 解释: ...
- java 获取请求的完整url地址
String url=request.getRequestURL()+"?"+request.getQueryString();
- 玲珑杯”ACM比赛 Round #15
手速狗从西安回来一只浑浑噩噩,好不容易迎来一场送饭比赛体验一把河南的优势,结果被高中生狂虐,无缘奖金..我的奖品梦就这样一次次被打破.... A -- Reverse the lights 最后半小时 ...
- table中填写数据并批量增加
<table class = "table jtable table-bordered table-striped hide" id = "table_1" ...
- Callable、Future、FutureTask_笔记
参考:http://blog.csdn.net/javazejian/article/details/50896505 1.Callable<V>接口 Runnable接口 public ...