邮递员送信(letter)

2024-02-05 10:58
文章标签 邮递员 送信 letter

本文主要是介绍邮递员送信(letter),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

By Stockholm

邮递员送信(letter)

题目描述有一个邮递员要送东西,邮局在节点 1.他总共要送 N-1 样东西,其目的地分别是 2~N。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 M 条道路,通过每条道路需要一定的时间。这个邮递员每次只能带一样东西。 求送完这 N-1 样东西并且最终回到邮局
最少需要多少时间。
输入输出格式
输入格式:
第一行包括两个整数 N 和 M。
第 2 到第 M+1 行,每行三个数字 U、V、W,表示从 A 到 B 有一条
需要 W 时间的道路。 满足 1<=U,V<=N,1<=W<=10000,输入保
证任意两点都能互相到达。
【数据规模】
对于 30%的数据,有 1≤N≤200;
对于 100%的数据,有 1≤N≤1000,1≤M≤100000。
输出格式:
输出仅一行,包含一个整数,为最少需要的时间。输入输出样例
输入样例#1:
5 10
2 3 5
1 5 5
3 5 6
1 2 8
1 3 8
5 3 4
4 1 8
4 5 3
3 5 6
5 4 2
输出样例#1:
83
这个题明显的显现出了 SPFA 这个方法的优势。一个双向SPFA完美AC。

代码(C++)
#include<iostream>
#include<cstdio>
#include<cstdlib>#include<cstring>
#include<deque>
using namespace std;
int i,j,m,n;
int head[1001],hed2[1001];
int us[1001];
int dis[1001];
long long ans;
struct node
{
int yy;
int v;
struct node *nxt;
}a[400005],e[400005];
int r()
{
int aans=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();while(ch>='0'&&ch<='9')
{
aans*=10;
aans+=ch-'0';
ch=getchar();
}
return aans;
}
int spfa1(int x)
{
us[x]=1;
deque<int>q;
dis[x]=0;
q.push_front(x);
struct node *p;
while(!q.empty())
{
x=q.front();
p=&a[head[x]];
us[x]=0;
q.pop_front();while(p->yy!=0)
{
if(dis[x]+p->v<dis[p->yy])
{
dis[p->yy]=dis[x]+p->v;
if(!us[p->yy])
{
if(q.empty()||dis[q.front()]>dis[p->yy])
q.push_front(p->yy);
else
q.push_back(p->yy);
us[p->yy]=1;
}
}
p=p->nxt;
}
}
}int spfa2(int x)
{
us[x]=1;
deque<int>q;
dis[x]=0;
q.push_front(x);
struct node *p;
while(!q.empty())
{
x=q.front();
p=&e[hed2[x]];
us[x]=0;
q.pop_front();
while(p->yy!=0)
{
if(dis[x]+p->v<dis[p->yy])
{
dis[p->yy]=dis[x]+p->v;
if(!us[p->yy])
{if(q.empty()||dis[q.front()]>dis[p->yy])
q.push_front(p->yy);
else
q.push_back(p->yy);
us[p->yy]=1;
}
}
p=p->nxt;
}
}
}
int main()
{
n=r(),m=r();
int x,y,z;
for(i=1;i<=m;i++)
{
x=r(),y=r(),z=r();
a[i].yy=y,a[i].v=z;
a[i].nxt=&a[head[x]];head[x]=i;
e[i].yy=x,e[i].v=z;
e[i].nxt=&e[hed2[y]];
hed2[y]=i;
}
memset(dis,0x7f7f7f7f,sizeof(dis));
spfa1(1);
for(i=1;i<=n;i++)
ans+=dis[i];
memset(dis,0x7f7f7f7f,sizeof(dis));
spfa2(1);
for(i=1;i<=n;i++)
ans+=dis[i];
cout<<ans;
return 0;
}

这里写图片描述

这篇关于邮递员送信(letter)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680698

相关文章

LeetCode 17 Letter Combinations of a Phone Number

题意: 给出数字串s,输出按照9键键盘输入s时可能的所有字符串。 思路: 没思路……直接模拟过程就得了…… 写switch好看点……吧…… 代码: class Solution {public:vector<string> letterCombinations(string digits) {vector<string> res;if(!digits.size()){

第八届湘潭大学程序设计比赛 A Love Letter

A Love Letter Accepted : 58 Submit : 152Time Limit : 1000 MS Memory Limit : 65536 KB  题目描述   CodeMonkey终于下定决心用情书的方式向心爱的女神表白,当他历经几天几夜写完之后才知道女神有很多不喜欢的词,所以他不得不有把这些词删掉。例如:原文是:ILOVEYOU,女神不喜欢的词是‘L

LeetCode:Letter Combinations of a Phone Number

题目链接:https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/ 项目源码:https://github.com/haha174/daylx Given a string containing digits from 2-9 inclusive, return all possible l

论文返修(response letter)一些很有用的套话

总结了一部分万能的套话,以体现我们对杂志社编辑和审稿人的尊重。 Firstly, we would like to thank you for your kind letter and for reviewers’ constructive comments concerning our article (Manuscript No.:XXXXX).These comments are all

Letter编程语言:深度解析其四大核心特性、五大应用场景、六大设计原则及七大未来展望

Letter编程语言:深度解析其四大核心特性、五大应用场景、六大设计原则及七大未来展望 Letter编程语言,作为一种新兴的编程语言,近年来在编程界引起了广泛关注。本文将从四个方面、五个方面、六个方面和七个方面,对其核心特性、应用场景、设计原则及未来展望进行深入剖析,帮助读者全面了解Letter编程语言的魅力与潜力。 四大核心特性 Letter编程语言以其独特的四大核心特性脱颖而出。首先,它

stm32开发之threadx整合letter-shell 组件记录

前言 使用过rt-thread的shell 命令交互的方式,觉得比较方便,所以在threadx中也移植个shell的组件。这里使用的是letter-shellletter-shell 核心的逻辑在于组件通过链接文件自动初始化或自动添加的两种方式,方便开发源码仓库 实验(核心代码) shell 线程组件 /** Copyright (c) 2024-2024,shchl** SPDX-L

2023 E3 算法题第一题 (Difference Letter Count)

题的内容 Task 1You are given a string letters made of N English letters. Count the number of different letters that appear in both uppercase and lowercase where all lowercase occurrences of the given l

【深度学习实战(4)】使用PIL库实现自己的letter_box操作

一、letter_box 深度学习模型输入图片的尺寸为正方形,而数据集中的图片一般为长方形,粗暴的resize会使得图片失真,采用letterbox可以较好的解决这个问题。该方法可以保持图片的长宽比例,剩下的部分采用灰色填充。 二、代码 本例中,模型输入尺寸为604x640,而我们读取的图片的实际尺寸为128x384,通过letter_box操作,实现将原始图像以不失真的方式调整为640x6

例题5-11 邮件传输代理的交互(The Letter Carrier's Rounds,ACM/ICPC World Finals 1999,UVa814)

原题链接:https://vjudge.net/problem/UVA-814 分类:STL综合 备注:字符串以及STL容器的综合运用 前言:uDebug AndyRoswellD的数据没过,但是我没看懂他的输出的逻辑,难道有多个传输者?题目没这么写啊,好歹还是AC了。个人认为是他上传的数据有误。 代码如下: #include<iostream>#include<sstream>#incl

软件随想录(local.joelonsoftware.com/wiki)-2000年06月03日 策略书之三:让我换回去! - Strategy Letter III: Let Me Go Back!

2000年06月03日 策略书之三:让我换回去! - Strategy Letter III: Let Me Go Back!     The Joel on Software Translation Project:策略书之三 From The Joel on Software Translation Project Jump to: navigation, search 策略