1. 程式人生 > >noip_最後一遍_2-圖論部分

noip_最後一遍_2-圖論部分

大體按照 數學 圖論 dp 資料結構 這樣的順序

模板集 這個真的只有模板了………………

·spfa

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define maxn 100005
 5 ll n,m,k,l,a,b,c,d[maxn],s,visit[maxn];
 6 struct edge{int from,to,val;};
 7 vector<int>g[maxn];vector<edge>edges;
8 void add_edge(int f,int t,int v){ 9 g[f].push_back(k);edges.push_back({f,t,v});k+=1; 10 }void spfa(int s){ 11 for(int i=1;i<=n;i++)d[i]=2147483647;queue<int>q;q.push(s); 12 visit[s]=1,d[s]=0; 13 while(!q.empty()){int u=q.front();q.pop();visit[u]=0; 14 for(int i=0;i<g[u].size();i++){edge &e=edges[g[u][i]];
15 if(d[e.to]>d[u]+e.val){d[e.to]=d[u]+e.val; 16 if(!visit[e.to])q.push(e.to),visit[e.to]=1; 17 } 18 } 19 } 20 } 21 int main(){ 22 cin>>n>>m>>s;for(int i=1;i<=m;i++)cin>>a>>b>>c,add_edge(a,b,c);spfa(s);
23 for(int i=1;i<=n;i++)cout<<d[i]<<" "; 24 }
View Code

 

·dj

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define maxn 100005
 5 
 6 ll n,m,k,l,a,b,c,d[maxn],s,visit[maxn];
 7 struct edge{int from,to,val;};
 8 vector<int>g[maxn];vector<edge>edges;
 9 void add_edge(int f,int t,int v){
10     g[f].push_back(k);edges.push_back({f,t,v});k+=1;
11 }
12 
13 struct node{int u,d;
14     bool operator <(node b)const{
15         return d>b.d; 
16     }
17 };
18 void dj(int s){
19     for(int i=1;i<=n;i++)d[i]=2147483647;priority_queue<node>q;q.push({s,0});
20     visit[s]=1,d[s]=0;
21     while(!q.empty()){int u=q.top().u;q.pop();visit[u]=0;
22         for(int i=0;i<g[u].size();i++){edge &e=edges[g[u][i]];
23             if(d[e.to]>d[u]+e.val){d[e.to]=d[u]+e.val;
24                 if(!visit[e.to])q.push({e.to,d[e.to]}),visit[e.to]=1;
25             }
26         }
27     }
28 }
29 
30 int main(){
31     cin>>n>>m>>s;
32     for(int i=1;i<=m;i++)scanf("%lld%lld%lld",&a,&b,&c),add_edge(a,b,c);
33     dj(s);for(int i=1;i<=n;i++)printf("%lld ",d[i]);
34     return 0;
35 }
View Code

 

·網路流

 

·費用流

 

·kruscall

 

·倍增lca

 

·樹剖

 

·lct

 

·無向圖tarjan只割頂 橋

 

·流圖tarjan

 

·2-sat

 

·點分(這個考就沒意思了………………)

 

·拓撲排序和基環樹

 

·縮點