csu 10月 月赛 D 题 CX and girls
Description
CX是要赶去上课,为了不迟到必须要以最短的路径到达教室,同时CX希望经过的路上能看到的学妹越多越好。现在把地图抽象成一个无向图,CX从1点出发,教室在N号点,告诉每个点上学妹的数量,每条边的长度。请你求出CX以最短路径赶到教室最多能看到多少学妹。
Input
多组输入数据(最多20组),输入到文件结束。
每组数据第一行两个正整数N,M其中N代表点的个数(2<=N<=1000),M代表边的个数(1<=M<=10000)。
接下来一行N个数,代表着1~N每个点上学妹的个数,(0<=Ni<=50)。 接下来M行,每行三个数A B C(1<=A,B<=N,0<c<=100)代表A,B间有边,长度为C。(可能存在重边)
Output
输出CX以最短距离从1到n的情况下能看到的最多学妹数量,若从点1无法到达点N输出-1。
Sample Input
Sample Output
HINT
CSU_ZZY
Source
最短路的题;
每次找到距离最小的点,如果有多个点,找到学妹最多的那个;
松弛的时候,将接下来的点的路径变短,如果路径相同,增加学妹的数量;
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005
#define inf 10000000
using namespace std; int xuemei[maxn],map[maxn][maxn],d[maxn],dxuemei[maxn];
bool vis[maxn]; int main()
{
// freopen("new.txt","r",stdin);
int n,m,dd,x,y;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=; i<=n; i++)scanf("%d",&xuemei[i]);
memset(map,0x1f,sizeof map);
for(int i=; i<=m; i++)
{
scanf("%d%d%d",&x,&y,&dd);
if(dd>map[x][y])continue;
map[x][y]=dd;
map[y][x]=dd;
}
memset(vis,,sizeof vis);
for(int i=; i<=n; i++)
{
d[i]=(i==?:inf);
dxuemei[i]=(i==?xuemei[]:);
}
for(int i=; i<=n; i++)
{
y=inf;
int t=;
for(int j=; j<=n; j++)
if(!vis[j]&&d[j]<y)
{
x=j;
y=d[j];
t=dxuemei[j];
}
else if(!vis[j]&&d[j]==y&&dxuemei[j]>=t)
{
x=j;
y=d[j];
t=dxuemei[j];
}
vis[x]=;
for(int j=; j<=n; j++)
if(d[j]>d[x]+map[x][j])
{
d[j]=d[x]+map[x][j];
dxuemei[j]=dxuemei[x]+xuemei[j];
}
else if(d[j]==d[x]+map[x][j])
dxuemei[j]=max(dxuemei[j],dxuemei[x]+xuemei[j]);
}
if(d[n]==inf)puts("-1"); else printf("%d\n",dxuemei[n]);
}
return ;
}
csu 10月 月赛 D 题 CX and girls的更多相关文章
- csu 10月 月赛 H 题 A Very Hard Problem
Description CX老湿经常被人黑,被黑得多了,自己也就麻木了.于是经常听到有人黑他,他都会深情地说一句:禽兽啊! 一天CX老湿突发奇想,给大家出了一个难题,并且声称谁能够准确地回答出问题才能 ...
- csu 10月 月赛 I 题 The Contest
Description 殷犇有很多队员.他们都认为自己是最强的,于是,一场比赛开始了~ 于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时 ...
- csu 10月 月赛 J 题
Description CSU又到了一年中评奖学金的时候了……各大学霸都或多或少地拿到了各种奖学金(你们自己看着办吧). 在这里,评奖学金有个很奇怪的规矩——每个同学得到的奖学金数一定满足相邻的两个非 ...
- csu 10月 月赛 A 题
Welcome to CSU OnlineJudge Problem A: Small change Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 15 ...
- csu 10月 月赛 F 题 ZZY and his little friends
一道字典树异或的题,但是数据比较水,被大家用暴力给干掉了! 以前写过一个类似的题,叫做the longest xor in tree: 两个差不多吧! 好久没写字典树了,复习一下! 代码: #incl ...
- csu 10月 月赛 B 题 Scoop water
一个卡特兰数的应用: 卡特兰数主要有以下几个用途: 1.不同的出栈入栈数: 2.n个点组成的不同的二叉树的数目: 3.凸多边形的三角剖分划分: 4.括号化问题: 通项公式是:h(n) = C(2n-2 ...
- Contest2037 - CSU Monthly 2013 Oct(中南大学2013年10月月赛水题部分题解)
Problem A: Small change 题解:http://www.cnblogs.com/crazyapple/p/3349469.html Problem B: Scoop water 题 ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- CSU 8月月赛 Decimal 小数化分数
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1303 这个OJ很容易跪所以我贴一下题目 Description 任意一个分数都是有理数,对于任意一 ...
随机推荐
- javabean对象要实现的接口们和要重写的方法们
在使用list集合的时候,什么也不用. 原因:list允许存储重复的元素. 在使用set集合的时候,要重写,equals()方法 和 hashCode() 方法. 愿意:set集合 不允许存放相同的元 ...
- 转:Oracle EBS 寄售业务总结
转自:http://blog.vsharing.com/nicr/A1359214.html 总述: 须通过一揽子采购协议(BPA)明确采购方与供应商之间的寄售关系,及各种协议条款: 通过来源补充规则 ...
- %s 与 %0s在 verilog中的区别
what is different between %s and %0s?(%s和%零s) %s prints the string as it is with spaces at the begin ...
- 闲话:你今天OO了吗?
如果你的分析习惯是在调研技术的时候最先弄清楚有多少业务流程,先画出业务流程图,然后顺藤摸瓜,找出业务流程中每一步骤的参与部门或岗位,弄清楚在这一步参与者所做的事情和填写表单的结果,并关心用户是如何把这 ...
- iframe父子窗口取值
父窗口中操作iframe:window.frames["iframeChild"].document //假如iframe的id为iframeChild 在子窗口中操作父窗口:wi ...
- 转载---SQL Server XML基础学习<3>之--FOR XML EXPLICIT
--使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...
- IAP (In-App Purchase)中文文档
内容转自:http://yarin.blog.51cto.com/1130898/549141 一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程 ...
- 九度OJ 1205 N阶楼梯上楼问题 -- 动态规划(递推求解)
题目地址:http://ac.jobdu.com/problem.php?pid=1205 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括 ...
- erlang 编程指南 第三章-顺序编程 课后练习
1. sum(3) => 6; sum(1,3) => 6; sum(6,6) => 6; sum(N) when is_integer(N) -> sum_acc(N,0); ...
- JS进制转换,浮点数相加,数字判断
document.write("整数转换函数:parseInt(数据,底数)<br>"); document.write("10101=>" ...