麻烦问下一个问题
  • 板块学术版
  • 楼主innocence_lyf
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/11/4 21:03
  • 上次更新2023/11/5 09:00:11
查看原帖
麻烦问下一个问题
380677
innocence_lyf楼主2020/11/4 21:03

麻烦问下

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 2505
using namespace std;
int d[N];
bool f[N];
int n,m,s,t;
int u,v,w;
int g[N][N];
int main(){
	//memset(g,0x7ffff,sizeof(g));
	cin>>n>>m>>s>>t;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			g[i][j]=0x7ffff;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		g[u][v]=w;
		g[v][u]=w;
	}
	for(int i=1; i<=n;i++)
		d[i]=g[s][i];
	f[s]=true;
	d[s]=0;
	for(int i=1;i<n;i++){
		int minn=0x7ffff;
		int k=0;
		for(int j=1;j<=n;j++){
			if(f[j]==false&&d[j]<minn){
				minn=d[j];
				k=j;
			}
		}
		if(k==0)
			break;
		f[k]=true;
		for(int j=1;j<=n;j++){
			if(d[j]>d[k]+g[k][j])
				d[j]=d[k]+g[k][j];
		}
	}
	cout<<d[t];
	//for(int k=1;k<=n;k++)
	//	for(int i=1;i<=n;i++)
	//		for(int j=1;j<=n;j++)
	//			g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
	//cout<<g[s][t];
	return 0;
}

中的 for(int i=1; i<=n;i++)

d[i]=g[s][i];

写i<=n和i<n有什么区别嘛(题解写的是i<n,但是我也过了

2020/11/4 21:03
加载中...