图论

1 #include<bits/stdc++.h>
2 #define qmin(x,y) (x=min(x,y))
3 #define qmax(x,y) (x=max(x,y))
4 #define vi vector<int>
5 #define vit vector<int>::iterator
6 #define pir pair<int,int>
7 #define fr first
8 #define sc second
9 #define mp(x,y) make_pair(x,y)
10 #define rsort(x,y) sort(x,y),reverse(x,y)
11 using namespace std;
12
13 typedef long long ll;
14 const int Maxn=110000;
15 const int inf=0x3f3f3f3f;
16
17 int to[Maxn],nxt[Maxn],first[Maxn],w[Maxn],tot=1;
18 int dis[Maxn];
19
20 inline void add(int u,int v,int wi) {
21 to[tot]=v;
22 nxt[tot]=first[u];
23 w[tot]=1;
24 first[u]=tot++;
25 }
26
27 void dijk(int s) {
28 priority_queue<pir> q;
29 memset(dis,0x3f,sizeof(dis));
30 q.push(mp(dis[s]=0,s));
31 while(!q.empty()) {
32 pir now=q.top();q.pop();
33 if(now.fr!=dis[now.sc]) continue;
34 for(int i=first[now.sc];i;i=nxt[i])
35 if(dis[to[i]]>now.fr+w[i]) {
36 dis[to[i]]=now.fr+w[i];
37 q.push(mp(dis[to[i]],to[i]));
38 }
39 }
40 }
41
42 int main() {
43 return 0;
44 }
dijkstra