社区讨论

最短路求调

学术版参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo15dwsp
此快照首次捕获于
2023/10/22 15:28
2 年前
此快照最后确认于
2023/11/02 15:00
2 年前
查看原帖
CPP
#include <iostream>
#include <cstring>

using namespace std;

const int N = 201, INF = 0x3f3f3f3f;

int d[N][N];
bool vis[N];
int temp[N];

int n;

int dijsktra(int start, int end)
{

	int t = -1;
	for (int i=0;i<=N;i++)
	{
		temp[i] = INF;
	}
	
	temp[start] = 0;
	
	for (int i=1;i<=n;i++)
	{
		t = -1;
		for (int j=1;j<=n;j++)
		{
			if (!vis[j] && (t==-1||temp[j]<temp[t]))
			{
				t = j;
			}
			
		}
		vis[t] = true;
		
		
		for (int k=1;k<=n;k++)
		{
			temp[k] = min(temp[k], temp[t]+d[t][k]);
			
		}
		
	}
	

	
	return temp[end];
}

int main()
{
	cin >> n;
	
	int v;
	
	memset(d, INF, sizeof(d));
	
	for (int i=1;i<=n;i++)
	{
		d[i][i] = 0;
	}
	
	for (int i=1;i<=n;i++)
	{
		for (int j=i+1;j<=n;j++)
		{
			cin >> v;
			d[i][j] = v;
		}
	}
	
	int value = dijsktra(1, n);
	cout << value;
	
	
	
	
	return 0;
}
我太弱了(别喷) https://www.luogu.com.cn/problem/P1359
输出不了qwq

回复

5 条回复,欢迎继续交流。

正在加载回复...