这题目描述的也太像无向图了吧
#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;
}