邻接矩阵(无向图)模板
#include<bits/stdc++.h>
using namespace std;
const int mn = 2510;
const int inf = 0x3f;
int n, m, u, v, w;
int g[mn][mn], dis[mn];
bool st[mn];
int main()
{
memset(g, inf, sizeof(g));
memset(dis, inf, sizeof(dis));
cin >> n >> m;
for(int i=0;i<m;i++)
{
cin >> u >> v >> w;
w = min(g[u][v], w);
g[u][v] = w;
g[v][u] = w;
}
dis[1] = 0;
for(int i = 1;i<=n;i++)
{
int t = -1;
for(int j=1;j<=n;j++)
if(!st[j] && (t == -1 || dis[j] < dis[t]))
t = j;
st[t] = 1;
for(int j=1;j<=n;j++)
dis[j] = min(dis[j], dis[t]+g[t][j]);
}
cout << dis[n];
}