記錄一下最短路的一些經典例題,當做是模板來用吧。
例題:title:agri-net
#include #include #include #include #include#include#define shuzu 101
int maxn=0x7fffffff;
using namespace std;
int prime()
} return maxlen;
}int main()
} for(int i=1;i<=m;i++)
printf("%d\n",prim());
} return 0;
}
例題title:silver cow party
#include #include #include #include using namespace std;
int n,m,x;
int maxn= 10000000;
int minn=-0x7fffffff;
int dis1[1005],dis2[1005];
char vis[1005];
void chushihua()
void dijkstra(int dis)
dis[x]=0;
while(1)
if(v == -1)
break;
vis[v]=1;
for(int j = 1; j <= n; j++)
}}int main()
dijkstra(dis1);
for(int i=1;i<=n;i++)
for(int j=1;j最短路差不多是乙個意思,問的就是從a到b之間最短的路徑。
首先初始化dis陣列為非常大的值,它記錄的是從a到其他點的最小值。
第乙個大迴圈的意思是說,從a到另外點的距離有乙個最小值,記錄這個最小值的下標。
第二個迴圈的意思是說從從a到一點c,通過c間接到b有乙個更小的距離。
舉個例子就是說,a->b 100公尺,a->c 50公尺,c->b 20公尺,這時候第二次迴圈更改為dis[b] = 50+20=70;
寫的比較水,大概就是這個意思。
例題題解 最短路計數
給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。從最基礎的dj思考 迭代式進行迭代定然滿足d p va l np d p vald p v alnp 其中p pp表示當前迴圈的點,npnp np表示與p pp相連的新列舉的點。因此我們在這一處轉移做變...
Dijkstra演算法 最短路徑 (部分)
void dijkstra int n,int v,int dist,int prev,int c maxnum maxnum dist v 0 s v 1 依次將未放入s集合的結點中,取dist最小值的結點,放入結合s中 一旦s包含了所有v中頂點,dist就記錄了從源點到所有其他頂點之間的最短路徑...
差分約束 最短路 經典例題 love
題目描述 吶,貴樹真的是乙個很帥的男孩子呢,所以好多女孩都給他寫至少一封 了情書。那每個女孩給了貴樹寫了多少情書呢?我們不知道,但是我們知 道一些女孩子寫情書數量的關係,你的任務是推斷出貴樹最少受到了多少 情書。輸入檔案 輸入的第一行為兩個整數 n,k,表示一共 n 個女孩,知道 k 對關係 接下來...