278 Flask學習【第07篇】:Flask中的wtforms使用
阿新 • • 發佈:2020-12-06
鏈式前向星模板
//前置條件
const int N=105;
int hd[N],cnt=0;
struct Edge {
int to,val,nxt;
}e[N*N];
//鏈式前向星
void build(int u,int v,int w)
{
e[++cnt].to=v;
e[cnt].val=w;
e[cnt].nxt=hd[u];
hd[u]=cnt;
}
下面以簡易的 D A G DAG DAG 圖舉例(三點三邊)
//建圖
for(int i=0;i<3;++i)
{
int u,v,w;
cin>>u>> v>>w;
build(u,v,w);
}
//遍歷以 u節點為起始位置的所有邊
for(int u=1;u<=3;++u)
{
for(int i=hd[u];i;i=e[i].nxt)
{
cout<<u<<' '<<e[i].to<<' '<<e[i].val<<endl;
}
}
input:
1 2 3
1 3 6
2 3 9
output:
1 3 6
1 2 3
2 3 9
詳解
結構體
E
d
g
e
Edge
Edge 中的 to、val、nxt 和 head 的含義如下
to
:箭頭指向的節點val
:邊上的權值nxt
:該節點(u)上一次指向邊的編號,若沒有上一次指向邊則為 0hd
:當前邊的編號
cnt 代表每條邊的編號,從下標 1 開始,所以當 nxt 為 0 時,即該節點(u)目前沒有指向過任意一條邊
hd
(head)和 nxt
(next)都是儲存邊的編號,因此遍歷也是按照點對應的邊來遍歷
第一重迴圈,迴圈所有節點,也就是將每個節點作都為 u,尋找其指向邊
第二重迴圈,hd[u]
儲存的是節點 u 所有指向邊中最後一條邊(編號最大)的編號,ed[hd[u]].nxt
表示當前節點的上一次指向邊的編號,若是 0 則已經全部遍歷完了(停止遍歷)