#include#include#include#include#include#include#include#include#include#include#include#include//includeusing namespace std;
#define ll long long
#define mod 1000000007
#define maxn 100050
#define inf 0x3f3f3f3f
ll read()
while (ch >= '0' && ch <= '9')
return w * x;
}//int a=read();
template inline bool read(tt& ret)
while (ch != '-' && (ch < '0' || ch>'9'))
sgn = (ch == '-') ? -1 : 1;
ret = (ch == '-') ? 0 : (ch - '0');
while (ch = getchar(), ch >= '0' && ch <= '9')
ret *= sgn;
return 1;}/*
while(read(a))
*/
定義與輸入 example:
pairp;//標頭檔案#includecin >> p.first >> p.second;
比較:比較的時候,優先比較first大小,first相同時比較second。
還可以作為map的鍵值進行插入操作 example:
int main()
};
定義
mapmp;
基本操作
/* 向map中插入元素 */
m[key] = value;
m.insert(make_pair(key, value));
/* 查詢元素 */
int i = m[key];
map::iterator it = m.find(key);
/* 刪除元素 */
m.erase(key); // 刪除與指定key鍵值相匹配的元素對,並返回被刪除的元素的個數。
m.erase(it); // 刪除由迭代器it所指定的元素對,並返回指向下乙個元素對的迭代器。
/* 其他操作 */
m.size(); // 返回元素個數
m.empty(); // 判斷是否為空
m.clear(); // 清空所有元素
ll cnt, head[maxn], d[maxn];
struct node ;
node edge[maxn*2];//雙向圖開兩倍空間
void add(ll x, ll y, ll w)//雙向圖要呼叫兩次
複雜度\(o(eloge)\)
dijkstra本質上的思想是貪心,它只適用於不含負權邊的圖.
ll n, m, s, wi, vi, ui, d[maxn], head[maxn], cnt;
struct node
;node edge[maxn * 2];//開雙倍大小
struct qnode
}now,qt;
priority_queueq;
qnode init(ll x, ll dis)
void add(ll x, ll y, ll z)
void dij(ll s)
d[s] = 0;
now.x = s;
now.dis = 0;
q.push(now);
while (!q.empty())
} }}
int main()
dij(s);
for (register ll i = 1; i <= n; i++)
cout << d[i];
} cout << endl;
return 0;
}
ll cnt, head[maxn], d[maxn],n,m,ui,vi,wi;
struct node ;
node edge[maxn * 2];//雙向圖開兩倍空間
void add(ll x, ll y, ll w)//雙向圖要呼叫兩次
bool bellman_ford(ll s)
d[s] = 0;
for (register int i = 1; i < n; i++)//最多鬆弛n-1次
}} if (!ok)
return 1;//無負環
} for (register int j = 1; j <= n; j++)
}} return 1;
}
//
#includeusing namespace std;
#define ll int
int read()
while(ch>='0'&&ch<='9')
return w*x;
}int n,m,cnt,tt;
struct node;
node edge[200005];
void add(int a,int b,int w)
bool cmp(node a,node b)
int fa[5005];
int found(int x)
while(x!=r)
return x;
}bool ifin(int a,int b)
void un(int a,int b)
int ans,aa,bb,cc;
int main()
for(register int i=1;i<=m;i++)
sort(edge+1,edge+cnt+1,cmp);//按照邊從小到大排序
for(register int i=1;i<=cnt;i++) }
if(ttelse
return 0;
}
整理自用 模板
2.類模板與模板類 知識點 1.函式模板呼叫時不需要顯式指定型別,系統自動匹配引數型別,若沒有合適的,會進行報錯。2.類模板使用需要顯式指定型別。3.返回值和引數的型別一致。將函式賦值給函式指標之時,尤其需要注意這個問題。4.函式模板是由編譯器根據呼叫型別例項化為可執行的函式。5.函式模版可以針對函...
自用模板 數字dp
include includeint dp 10 3 dp i 0 為位數小於等於i且不含62也不含4的數字的個數 dp i 1 為位數為i且首位為2且不含62也不含4的數字的個數 dp i 2 為位數小於等於i且含62或4的數字的個數 int digit 10 void er int wei in...
最短路模板(自用)
摘自 floyd演算法是多源最短路演算法,複雜度最高 n 3 通常用在點比較少的起點不固定的問題中。能解決負邊 負權 但不能解決負環。dijkstra演算法是單源最短路演算法,最常用時間複雜度 n 2 優化後可以達到 nlogn 不能解決負邊問題,稀疏圖需要耗費比較多的空間。spfa演算法適合稀疏圖...