
#include<map> #include<ctime> #include<cmath> #include<queue> #include<cctype> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define ll long long const int maxn=100005; int n,m,cnt,head[maxn]; struct edge{ int x,y,val,next; }e[maxn<<1]; int max(int a,int b){return a>=b ? a : b ;} int min(int a,int b){return a<=b ? a : b ;} void add(int x,int y,int val){ e[++cnt]=(edge){x,y,val,head[x]}; head[x]=cnt; } bool vis[maxn]; int s,t,dis[maxn]; void dijkstra(){ priority_queue<pair<int,int> > q; memset(dis,0x3f,sizeof(dis)); memset(vis,false,sizeof(vis)); dis[s]=0; q.push(make_pair(0,s)); while(!q.empty()){ int x=q.top().second; q.pop(); if(vis[x]) continue; vis[x]=true; for(int i=head[x];i;i=e[i].next){ int y=e[i].y,val=e[i].val; if(dis[y]>dis[x]+val){ dis[y]=dis[x]+val; q.push(make_pair(-dis[y],y)); } } } } int main(){ return 0; }