攜程程式設計大賽決賽 1004 最短路徑的代價

2021-06-21 13:05:42 字數 1000 閱讀 9775

這個題題意就不用說了,想了半天。

思路就是把所有的最短路徑邊求出來,然後再以刪掉該邊的花費作為代價建圖,設立源點和匯點,求最大流即可。

**:#include#include#include#includeusing namespace std;

const int maxn=2000;

const int maxm=50000;

const int inf=1<<29;

struct node

s[maxn*maxn];

struct snode

ee[maxn*maxn];

int x,y,n,m,e,des,st,head[maxn],nxt[maxm],cost[maxm],pnt[maxm],dist[maxn];

int we,whead[maxn],wpnt[maxm],wnxt[maxm],flow[maxm],level[maxn];

int f[maxn][maxn];

bool vis[maxn];

queueq;

void addedge(int u,int v,int c)

int spfa(int st,int des)

}} }

return dist[des];

}void addedgew(int u,int v,int f)

bool bfs(int st)

}return level[des];

}int dfs(int u,int sum)

}return level[u]=0;

}int maxflow()

}return ans;

}int main()

{ while(scanf("%d%d",&n,&m)&&(n||m))

{memset(head,-1,sizeof(head));

e=we=0;

scanf("%d%d",&x,&y);

for(int i=0;i

攜程 最短路徑的代價

攜程的一道圖論題 題意 給出一張無向圖 每條邊有乙個長度和 刪除該邊的權值 再給出起點和終點 求從起點到終點的最短路增加 要刪除的邊的最小的權值和。思路 要使 從起點到終點的最短路長度增加 就要把該最短路破壞掉 從起點到終點的最短路可能不止一條,我們可以把 這些路徑都找出來 重新構成乙個圖 再求這個...

攜程程式設計大賽 (預賽第二場)

a 和食物鏈做法一樣,帶權並查集 b dp,01揹包背出所有能組成邊情況,在用這些情況去計算面積保留最大值 c 每個點從後往前搜,搜到合適就輸出,搜不到就輸出255 255 255 d 博弈,如果成對成對出現後手勝,否則先手勝 a include include const int n 10005 ...

挑戰程式設計 迷宮的最短路徑(BFS)

目錄題解 寬度優先搜尋 題目詳情 description 給定乙個大小為 n m 的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四格的通道移動。請求出從起點到終點所需的最小步數 限制條件 n,m 100 input 輸入兩個數字 n 和 m,分別表示迷宮的長和寬,用空格隔開 輸入代表迷宮的...