RE求助!!!
  • 板块学术版
  • 楼主ljrzxcvbnm
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/1/23 15:35
  • 上次更新2023/10/28 11:26:41
查看原帖
RE求助!!!
530781
ljrzxcvbnm楼主2022/1/23 15:35

REing......

#include<bits/stdc++.h>
using namespace std;
int  asdfghjkl[800001];
int  to[800001];
long long le[800001];
int nexty[200001]	;
long long dis[200001];
int  o=1;
bool v[200001];
void asd(int x,int y,int g)
{
	to[o]=y;
	le[o]=g;
	asdfghjkl[o]=nexty[x];
	nexty[x]=o++;
}
int main(){
	int  n,m;
	cin>>n>>m;
	memset(asdfghjkl,0,sizeof(asdfghjkl));
	memset(dis,127,sizeof(dis));
	dis[1]=0;
	for(long long i=1,x,y,g;i<=m;i++)
	 {
	 	scanf("%d%d%d",&x,&y,&g);
	 	if(x==1)dis[y]=min(dis[y],g);
	 	if(y==1)dis[x]=min(dis[x],g);
	 	asd(x,y,g);
	 	asd(y,x,g);
	 }

	 v[1]=true;
	 for(long long i=1;i<n;i++)
	 {
	 	long long l=1e9;
	 	long long k=0;
	 	for(long long j=1;j<=n;j++)
	 	if((!v[j])&&dis[j]<l)
	 	{
	 		l=dis[j];
	 		k=j;
		 }
		 if(k==0)break;
		 v[k]=true;
		 for(int j=1;j<=n;j++)
		 for(int qwe=nexty[k];qwe!=0;qwe=asdfghjkl[qwe])
		 if(to[qwe]==j)
		 {
		 	if(dis[k]+le[qwe]<dis[j])
		 	dis[j]=dis[k]+le[qwe];
		 }
	 }
	cout<<dis[n]; 
}

...

2022/1/23 15:35
加载中...