dijkstra
wenge
2020-02-12 21:18:47
# dijkstra
```cpp
struct node{
ll id,d;
node(){}
node(ll a,ll b){
id=a;
d=b;
}
};
bool operator <(node x,node y){
return x.d>y.d;
}
ll n,m,s,t;
vector<ll> f[N];
ll vis[N],dis[N];
void dijkstra(ll s){
for(int i=1;i<=n;i++)dis[i]=0x3f3f3f3f;
dis[s]=0;
priority_queue<node> q;
q.push(node(s,0));
while(!q.empty()){
ll x=q.top().id;
q.pop();
if(vis[x])continue;
vis[x]=1;
for(int i=0;i<f[x].size();i++){
ll y=f[x][i];
ll l=dis[x]+g[x][i];
if(dis[y]>l){
dis[y]=l;
q.push(node(y,dis[y]));
}
}
}
}
```