程序永远输出0
查看原帖
程序永远输出0
1283847
March7thDev楼主2024/8/28 14:12

代码:

#include<bits/stdc++.h>
using namespace std;
int graph[101][101];
int n,m;
int minn=0x3f3f3f3f;
int go[10001];
int dis[101];
int vis[101];
int ans=0;
int dij(int k,int end)
{
	memset(vis,false,sizeof(vis));
	vis[1]=1;
	for(int i=1;i<n;i++)
	{
		int MINL=100000000;
		int k=0;
		for(int j=1;j<=n;j++)
		{
			if(!vis[j]&&dis[j]<MINL)
			{
				MINL=dis[j];
				k=j;
			}
		}
		vis[k]=1;
		for(int j=1;j<=n;j++)
		{
			if(dis[j]>dis[k]+graph[k][j])
			{
				dis[j]=dis[k]+graph[k][j];
			}
		}
	}
	return dis[end];
}
int main()
{
	//思路:dij每两点跑一次
	 cin>>n>>m;
	 for(int i=1;i<=m;i++)
	 {
	 	cin>>go[i];
	 }
	 for(int i=1;i<=n;i++)
	 {
	 	for(int j=1;j<=n;j++)
	 	{
	 		cin>>graph[i][j];
		 }
	 }
	 for(int i=1;i<m;i++)
	 {
		ans+=dij(go[i],go[i+1]);
	}
	cout<<ans<<endl;
	return 0;
}

看注释

2024/8/28 14:12
加载中...