简单题目。。
/*
简单的bfs
*/
#include<algorithm>
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
const int inf = 0x3f3f3f3f;
const double pi=acos(-1.0);
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
const double eps = 1e-8;
const int maxm = 1000005;
const int maxn = 1005;
struct Edge{
int u,v,next,val;
}edge[ maxm*2 ];
int cnt ,head[ maxn ];
bool vis[ maxn ];
int dis1[ maxn ],dis2[ maxn ],girl[ maxn ];
//int dp[ maxn ];
queue<int>q;
//int pre[ maxn ];
void init(){
cnt = 0;
memset( head,-1,sizeof( head ) );
}
void addedge( int a,int b,int c ){
edge[ cnt ].u = a;
edge[ cnt ].v = b;
edge[ cnt ].val = c;
edge[ cnt ].next = head[ a ];
head[ a ] = cnt ++;
}
int spfa( int n ){
while( !q.empty() )
q.pop();
//memset( pre,-1,sizeof( pre ) );
memset( vis,false,sizeof( vis ) );
memset( dis1,0x3f,sizeof( dis1 ) );
memset( dis2,0x3f,sizeof( dis2 ) );
vis[ 1 ] = true;
q.push( 1 );
dis1[ 1 ] = 0;
dis2[ 1 ] = girl[ 1 ];
//for( int i=head[1];i!=-1;i=edge[i].next ){
// pre[ edge[i].v ] = 1;
//}
while( !q.empty() ){
int cur = q.front();
q.pop();
vis[ cur ] = false;
for( int i=head[cur];i!=-1;i=edge[i].next ){
int nxt = edge[ i ].v;
if( dis1[nxt]>dis1[cur]+edge[i].val ){
dis1[nxt] = dis1[cur]+edge[i].val;
//pre[ nxt ] = cur;
dis2[nxt] = dis2[cur]+girl[edge[i].v];
if( !vis[nxt] ){
vis[nxt] = true;
q.push( nxt );
}
}
else if( dis1[nxt]==dis1[cur]+edge[i].val ){
if( dis2[nxt]<dis2[cur]+girl[edge[i].v] ){
//pre[ nxt ] = cur;
dis2[nxt]=dis2[cur]+girl[edge[i].v];
if( !vis[nxt] ){
vis[nxt] = true;
q.push( nxt );
}
}
}
}
}
//printf("dis1[ %d ] = %d\n",n,dis1[n]);
if( dis1[n]>=0x3f3f3f3f ) return -1;
else return dis2[ n ];
/*
int ans = 0;
int cur = n;
while( 1 ){
ans += girl[ cur ];
cur = pre[ cur ];
if( cur==-1 ){
break;
}
}
return ans;
*/
}
int main(){
int n;
while( scanf("%d",&n)==1 ){
int m;
scanf("%d",&m);
for( int i=1;i<=n;i++ )
scanf("%d",&girl[i]);
int a,b,c;
init();
while( m-- ){
scanf("%d%d%d",&a,&b,&c);
//if( a==b ) continue;
addedge( a,b,c );
addedge( b,a,c );
}
printf("%d\n",spfa( n ) );
}
return 0;
}
分享到:
相关推荐
《CSU88RP1185D与CS1239在额温枪设计中的应用及公版解析》 额温枪作为一种非接触式的体温测量设备,近年来因其便捷、安全的特点,在医疗和日常生活场景中得到了广泛应用。本资料包包含了CSU88RP1185D与CS1239在额温...
《芯海科技CSU8RP1185D:国产36引脚8位OTP ROM单片机详解》 在当今快速发展的电子科技领域,国产芯片的崛起日益显著,其中芯海科技(CHipsea Technologies)推出的CSU8RP1185D是一款备受瞩目的36引脚8位OTP ROM...
《CSU18M88芯片详解》 CSU18M88是一款高性能、低功耗的微控制器,广泛应用于各类嵌入式系统中。本文将深入探讨该芯片的资源特性,帮助开发者全面理解其功能和应用潜力。 首先,CSU18M88的核心是基于ARM Cortex-M8...
在本DEMO程序中,我们关注的是芯海的CSU32MX10系列微控制器(MCU),这是一个专为各种嵌入式应用设计的高效能、低功耗的器件。该DEMO程序是基于C++语言编写的,这表明芯海CSU32MX10支持高级编程语言,为开发者提供了...
**FORTOCSU_IDE__CSU-IDE软件使用教程_芯海_** 这篇教程将详细介绍芯海科技推出的集成开发环境(Integrated Development Environment,简称IDE)——CSU-IDE的使用方法。作为一款专为芯海芯片设计的开发工具,CSU-...
CSU8RF3112是一款8位单片机微控制器(MCU),其特点在于内置了1K×16位的程序存储器E2PROM、96字节的数据存储器(SRAM),以及54字节的E2PROM用于数据存储。此外,它拥有总共只有43条单字指令,并具备6级存储堆栈。CSU8...
本文将详细介绍芯海科技针对8位MCU的开发工具,包括CSU8ICE的具体特性、CSU8开发工具简介以及芯海MCU开发工具的选型手册。 首先,让我们关注CSU8ICE,即芯海8位MCU的嵌入式ICE(In-Circuit Emulator)。这是一款为...
芯海科技的CSU8RF3111是一款高性能、低功耗的8位微控制器,专门设计用于处理各类嵌入式应用。该芯片集成了先进的FLASH存储器,使其在程序存储和数据存储方面具有较大的灵活性。下面我们将深入探讨这款芯片的一些关键...
CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),版本号为1.3.5。这个IDE是程序员编写、调试和优化CSU8ASM代码的重要工具,旨在提高开发效率和代码质量。在本文中,我们将详细探讨这款IDE的功能...
CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),它集成了代码编辑、编译、调试等多种功能,旨在提高程序员的开发效率和代码质量。这款软件对于学习和使用CSU8ASM汇编语言的用户来说是一个不可或缺...
CSU8RF2111/CSU8RF2112是一款8位单片机MCU,具备以下技术特点和知识点: 1. 8位单片机MCU:CSU8RF2111/CSU8RF2112采用8位微控制器架构,这意味着它的处理器以8位数据为单位进行操作和处理,适合用于控制任务不是...
"CSU Face Identification Evaluation System" 是一款专门用于人脸识别评估的专业工具,由 Colorado State University(CSU)开发。这个系统提供了全面的评测方法,旨在衡量人脸识别算法的性能和准确性。在人脸识别...
本文将深入探讨芯海芯片CSU8RF3111的相关知识,包括其功能特性、应用范围以及开发工具。 CSU8RF3111是一款基于AD型FLASH MCU(微控制器)的高性能芯片,适用于需要高效能、低功耗特性的应用场景。这款芯片集成了高...
【标题】:"CSU18P88用户手册-V1.2.pdf" 【描述】:"电子秤、小家电使用" 从标题和描述中可以提取以下知识点: 1. CSU18P88是一种用户手册中提及的特定型号的产品。 2. 该产品主要面向的使用领域是电子秤和小家电。 ...
本程序由芯海科技有限公司技术人员编写而成。该程序仅用于芯片功能的简单测试及作为该款芯片程序设计的入门参考。程序仅在有限的环境下测试并通过测试。若您有意调用该程序进行生产活动,请务必进行更加细致的设计和...
MP150+ CSU8RF3111电源模块ALTIUM设计硬件原理图+PCB文件,2层板设计,大小为64*42 mm,可做为你的学习设计参考。 主要器件: Library Component Count : 19 Name Description ------------------------------------...
许继CSU8000远动软件
芯海CSU8RP1186是一款基于一次性可编程只读存储器(OTPROM)的8位RISC单片机。这款单片机具有高性能的RISC架构,拥有36个引脚,并内置了4K×16位的OTPROM。CSU8RP1186的CPU核心基于8位SCM微控制器,拥有256字节的SRAM...
《C语言课件教程 CSU》是一份专为初学者设计的C语言学习资源,涵盖了C语言的基础到进阶知识,旨在帮助学习者系统地掌握这门编程语言。本教程由CSU(假设是某大学的缩写)的教师编写,具有较高的教学价值和实用性,...
导读:本文介绍了芯海科技有限公司OTP芯片CSU8RP3125应用于电子烟上的解决方案,该方案采用芯片内置的±1%精度的16MHZ的高速PWM时钟源,可在宽频率范围内灵活控制LED呼吸灯的变化,同时内置的12 Bit 1%测量误差的高...