这tnnd的是有向图
  • 板块P1359 租用游艇
  • 楼主AAA404
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/8/1 19:52
  • 上次更新2023/10/27 17:28:03
查看原帖
这tnnd的是有向图
723198
AAA404楼主2022/8/1 19:52

这题目描述的也太像无向图了吧

#include<bits/stdc++.h>
#define itn int
#define tin int
#define nit int
#define tni int
#define nti int
#define scnaf scanf
#define ptrinf printf
#define icn cin
#define cni cin
#define inc cin
#define nci cin
#define nic cin
#define cuot cout
#define ocut cout
#define fro for
using namespace std;
int dis[201][201],c[201],n;
bool b[201];
int main()
{
 	cin>>n;
 	memset(dis,0x3f,sizeof dis);
 	memset(b,0,sizeof b);
 	for(int i=1;i<=n;i++)
 	{
 		for(int j=i+1;j<=n;j++)
 		{
 			cin>>dis[i][j];
 		//	dis[j][i]=dis[i][j];这是一张有向图(讨论版大佬说的) 
		}
	}
	for(int i=1;i<=n;i++)
	{
		c[i]=dis[1][i];
		dis[i][i]=0;
	}
	b[1]=1;
	c[1]=0;
	for(int i=1;i<=n-1;i++)
	{
		int k=0,minl=0x3f3f3f3f;
		for(int j=1;j<=n;j++)
		{
			if(!b[j] && c[j]<minl)
			{
				minl=c[j];
				k=j;
			}
		}
		if(k==0)break;
		b[k]=1;
		for(int j=1;j<=n;j++)
		{
			if(!b[j] && c[k]+dis[k][j]<c[j])
			{
				c[j]=c[k]+dis[k][j];
			}
		}
	}
	cout<<c[n];
 	return 0;
}

2022/8/1 19:52
加载中...