#include <bits/stdc++.h>
#define M 100005
using namespace std;
int n,k,m,dis[M],i,x,y,ww,vis[M];
struct edge{
int v,w;
edge(){}
edge(int a,
int b){v=a,w=
b;}
};
vector <edge>
bian[M];
void add(
int a,
int b,
int c)
{
edge t=
edge(b,c);
bian[a].push_back(t);
}
bool operator cmp(
const int a,
int b)
const
{
return dis[a]>
dis[b];
}
priority_queue <
int,<vector>cmp>
mqy;
void djj (
int a)
{
memest(dis,0x3f,
sizeof(dis));
memest(vis,0,
sizeof(vis));
vis[a]=
1; dis[a]=
0;
for(i=
1;i<=n;i++
)
{
for(
int j=
0;j<bian[a].size(),j++
)
{
if(dis[bian[a][j].v]>dis[a]+
bian[a][j].w)
dis[bian[a][j].v]=dis[a]+
bian[a][j].w;mqy.push(bian[a][j].v);
}
while(!mqy.empty()&&vis[mqy.top()]==
1) mqy.pop();
a=mqy.top();vis[a]=
1;
}
}
int main(){
scanf("%d%d%d",&n,&k,&
m);
for(i=
1;i<=n;i++
)
{
scanf("%d%d%d",&x,&y,&
ww);
add(x,y,ww);
}
}
转载于:https://www.cnblogs.com/Lamboofhome/p/11537498.html
相关资源:JAVA上百实例源码以及开源项目