A*
A*
定点第k短路
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN=1e3+100,MAXM=1e5+100;
#define INF 123456789
int n,m,s,t,k;
struct Edge{
    int next,to,w;
}edge[MAXM<<1];
int cnt=0;
int head[MAXN],hed[MAXN];
int dis[MAXN];
bool vis[MAXN];
void add(int u,int v,int w)
{
    edge[cnt].w=w;
    edge[cnt].to=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}
void ad(int u,int v,int w)
{
    edge[cnt].w=w;
    edge[cnt].to=v;
    edge[cnt].next=hed[u];
    hed[u]=cnt++;
}
struct Dijkstra{
    void init()
    {
        scanf("%d%d",&n,&m);//点个数,路个数,起点,终点
        int u,v,c;
        for(int i=0;i<=n;i++){
            head[i]=-1,hed[i]=-1;
        }
        for(int k=0;k<m;k++){
            scanf("%d%d%d",&u,&v,&c);
            add(v,u,c);
            ad(u,v,c);
        }
        scanf("%d%d%d",&s,&t,&k);
        if(s==t) k++;
    }
    void solve()
    {
        memset(vis,0,sizeof(vis));
        fill(dis+1,dis+n 
                    
                     
                    
                