洛谷P3094 [USACO13DEC]假期计划Vacation Planning

题目描述

有N(1 <= N <= 200)个农场,用1..N编号。航空公司计划在农场间建立航线。对于任意一条航线,选择农场1..K中的农场作为枢纽(1 <= K <= 100, K <= N)。

当前共有M (1 <= M <= 10,000)条单向航线连接这些农场,从农场u_i 到农场 v_i, 将花费 d_i美元。(1 <= d_i <= 1,000,000).

航空公司最近收到Q (1 <= Q <= 10,000)个单向航行请求。第i个航行请求是从农场a_i到农场 b_i,航行必须经过至少一个枢纽农场(可以是起点或者终点农场),因此可能会多次经过某些农场。

请计算可行航行请求的数量,及完成所有可行请求的总费用。

输入输出格式

输入格式:

  • Line 1: Four integers: N, M, K, and Q.
  • Lines 2..1+M: Line i+1 contains u_i, v_i, and d_i for flight i.
  • Lines 2+M..1+M+Q: Line 1+M+i describes the ith trip in terms of a_i and b_i

输出格式:

  • Line 1: The number of trips (out of Q) for which a valid route is possible.
  • Line 2: The sum, over all trips for which a valid route is possible, of the minimum possible route cost.

输入输出样例

输入样例#1:

3 3 1 3
3 1 10
1 3 10
1 2 7
3 2
2 3
1 2

输出样例#1:

2
24

说明

There are three farms (numbered 1..3); farm 1 is a hub. There is a $10 flight from farm 3 to farm 1, and so on. We wish to look for trips from farm 3 to farm 2, from 2->3, and from 1->2.

The trip from 3->2 has only one possible route, of cost 10+7. The trip from 2->3 has no valid route, since there is no flight leaving farm 2. The trip from 1->2 has only one valid route again, of cost 7.

floyd求出最短路,对于每个询问枚举枢纽找最小花费。

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 using namespace std;
 8 const int mxn=300;
 9 int read(){
10     int x=0,f=1;char ch=getchar();
11     while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
12     while(ch>=‘0‘ && ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
13     return x*f;
14 }
15 int mp[mxn][mxn];
16 int n,m,k,Q;
17
18 int main(){
19     memset(mp,0x3f,sizeof mp);
20     n=read();m=read();k=read();Q=read();
21     int i,j;
22     int u,v,d;
23     for(i=1;i<=m;i++){
24         u=read();v=read();d=read();
25         mp[u][v]=min(mp[u][v],d);
26     }
27     for(int e=1;e<=n;e++)
28      for(i=1;i<=n;i++)
29       for(j=1;j<=n;j++){
30           if(i==j)mp[i][j]=0;
31           else mp[i][j]=min(mp[i][j],mp[i][e]+mp[e][j]);
32       }
33     long long ans=0;int cnt=0;
34     while(Q--){
35         u=read();v=read();
36         d=0x3f3f3f3f;
37         for(i=1;i<=k;i++){
38             d=min(d,mp[u][i]+mp[i][v]);
39         }
40         if(d<0x3f3f3f3f){
41             cnt++;
42             ans+=d;
43         }
44     }
45     printf("%d\n%lld\n",cnt,ans);
46     return 0;
47 }
时间: 2024-10-13 00:29:17

洛谷P3094 [USACO13DEC]假期计划Vacation Planning的相关文章

洛谷P1132 数字生成计划 广搜

洛谷P1132 数字生成计划 广搜 三种操作 因为要步数最少,所以广搜 1 #include <bits/stdc++.h> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 1000011 ; 6 struct node{ 7 int a,ans ; 8 }; 9 bool flag[N] ; 10 int f[N] ; 11 queue<node> q;

洛谷 P2762 太空飞行计划问题

题目背景 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的集合I={I1,I2,…In}.实验Ej需要用到的仪器是I的子集RjÍI.配置仪器Ik的费用为ck美元.实验Ej的赞助商已同意为该实验结果支付pj美元.W教授的任务是找出一个有效算法,确定在一次太空飞行中要进行哪些实验并因此而配置哪些仪器才能使太空飞行的净收益最大.这里净收益是指进行实验所

洛谷P3093 [USACO13DEC]牛奶调度Milk Scheduling

题目描述 Farmer John has N cows that need to be milked (1 <= N <= 10,000), each of which takes only one unit of time to milk. Being impatient animals, some cows will refuse to be milked if Farmer John waits too long to milk them. More specifically, cow

洛谷1137:旅行计划

题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多. 现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置.现在对于所有的i,都需要你为小明制定一条路线,并求出以城市i为终点最多能够游览多少个城市. 输入输出格式 输

洛谷 P1114 “非常男女”计划

题目描述 近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太多,仅是舞伴),通过各种推理和实验,他掌握了大量的实战经验.例如,据他观察,身高相近的人似乎比较合得来. 万圣节来临之际,XXX准备在学校策划一次大型的"非常男女"配对活动.对于这次活动的参与者,XXX有自己独特的选择方式.他希望能选择男女人数相等且身高都很接近的一些人.这种选择方式实现起来很简单.他让学校的所有人按照身高排成一排,然后从中选出连续的若干个人,使得这些人中男女人数相等.为了使活动更热闹,XXX当然希

洛谷3627 [APIO2009]抢掠计划

题目描述 输入格式: 第一行包含两个整数 N.M.N 表示路口的个数,M 表示道路条数.接下来 M 行,每行两个整数,这两个整数都在 1 到 N 之间,第 i+1 行的两个整数表示第 i 条道路的起点和终点的路口编号.接下来 N 行,每行一个整数,按顺序表示每 个路口处的 ATM 机中的钱数.接下来一行包含两个整数 S.P,S 表示市中心的 编号,也就是出发的路口.P 表示酒吧数目.接下来的一行中有 P 个整数,表示 P 个有酒吧的路口的编号. 输出格式: 输出一个整数,表示 Banditji

[洛谷OJ] P1114 “非常男女”计划

洛谷1114 “非常男女”计划 本题地址:http://www.luogu.org/problem/show?pid=1114 题目描述 近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太多,仅是舞伴),通过各种推理和实验,他掌握了大量的实战经验.例如,据他观察,身高相近的人似乎比较合得来. 万圣节来临之际,XXX准备在学校策划一次大型的“非常男女”配对活动.对于这次活动的参与者,XXX有自己独特的选择方式.他希望能选择男女人数相等且身高都很接近的一些人.这种选择方式实现起来很简单.

洛谷P1137 旅行计划 拓扑排序 图论

洛谷P1137 旅行计划 拓扑排序   图论在拓扑排序中把每个点能够浏览的点加上去 但是这样会有重复 因为我们要求一个点向前多能浏览的点 所以我们只要求连向这个点中能向前浏览的点数最多的点这一路就是能浏览的最多的点 然后这个点就相当于是拓扑排序中使该点的入度为 0 的那个点用那个点来更新当前点就行了 1 #include <bits/stdc++.h> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 #define LL long long 4

洛谷P2835 刻录光盘 [2017年6月计划 强连通分量02]

P2835 刻录光盘 题目描述 在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习.组委会觉得这个主意不错!可是组委会一时没有足够的空光盘,没法保证每个人都能拿到刻录上资料的光盘,又来不及去买了,怎么办呢?! 组委会把这个难题交给了LHC,LHC分析了一下所有营员的地域关系,发现有些营员是一个城市的,其实他们只需要一张就可以了,因为一个人拿到光盘后,其他人可以带着U盘之类的东西去拷贝啊! 可是,LHC调查后发现,由于种种原因