代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<string>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#define inf 0x3f3f3f3f
using namespace std;
int main()
{
int e[10][10],dis[10],book[10],i,j,n,m,t1,t2,t3,u,min;
scanf("%d%d",&n,&m); //图的规模 n顶点个数 m边的个数
//图的初始化
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i==j) e[i][j]=0;
else e[i][j]=inf;
}
//读入边
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&t1,&t2,&t3);
e[t1][t2]=t3;
}
//初始化dis:起点到相邻点的权值 (假设起点是1) book
int s=1;
for(i=1;i<=n;i++)
{
if(i==s)
dis[i]=0;
dis[i]=e[s][i];
book[i]=0;
}
book[s]=1;
//dijkstra核心算法
for(i=1;i<=n-1;i++)
{
min=inf;
for(j=1