/*次小生成樹
題意:給你一些路徑,現在將一部分路徑權值減少後問是否可以替代最小生成樹裡面的邊。
解:次小生成樹,即將這條邊連上,構成乙個環
求出任意兩點路徑之間的除了這條邊的最大值,比較這個最大值》=這條邊,說明可以替換。
prime演算法次小生成樹模板
*/#include#include#define n 1100
#define inf 0x3fffffff
int ma[n][n];
int min(int a,int b)
int max(int a,int b)
struct node bian[n*100];
int maxd[n][n],n;
void prime()
stac[top++]=1;//儲存最小生成樹的點
memset(vis,0,sizeof(vis));
vis[1]=1;
for(i=1;idis[j])
vis[next]=1;
//printf("%d\n",minn);
for(j=0;jma[next][j])
} return ;
}int main()
for(i=0;i=b)//比較即可
printf("yes\n");
else
printf("no\n");}}
return 0;
}
poj2831 樹的直徑 bfs dfs
這裡給出樹的直徑的證明 主要是利用了反證法 假設 s t這條路徑為樹的直徑,或者稱為樹上的最長路 現有結論,從任意一點u出發搜到的最遠的點一定是s t中的一點,然後再從這個最遠點開始搜,就可以搜到另乙個最長路的端點,即用兩遍廣搜就可以找出樹的最長路 證明 1.設u為s t路徑上的一點,結論顯然成立,...
次小生成樹模板
kruskal演算法 關於次小生成樹,首先求出最小生成樹,然後列舉每條不在最小生成樹上的邊 在原本的節點上新增乙個vis屬性進行判斷即可 並把這條邊放到最小生成樹上面,然後就一定會形成環,那麼我們在這條環路中取出一條 除了新加入的那一條邊 最長的路 這裡可以用d u v 來維護 最終得到的權值就是次...
最小生成樹 次小生成樹 模板
次小生成樹我的理解 在最小生成樹的基礎上,列舉不再最小生陳樹上的邊,然後成環,取出一條除了新加入的那條邊外的最長邊,最終的權值即為次小生成樹的權值。小結論 當次小生成樹的權值與最小生成樹的權值相同時,最小生成樹不唯一。include include include includeusing name...