APIO2008 免費道路

2022-03-19 20:48:58 字數 864 閱讀 4865

bzoj

luogu

先把必須連的鵝卵石路連上,大於k條no solution

什麼樣的鵝卵石路(u,v)必須連?所有水泥路都連上仍然不能使u,v連通的必須連

補全到k條鵝卵石路,補不全no solution

最後用水泥路構出生成樹,構不出no solution

#includeusing namespace std;

const int _=1e5+5;

int re()

while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();

return x*w;

}bool vis[_];

int n,m,k,cnt,fa[_],ans[_];

struct edgee[_];

int find(int x)

void unite(int x,int y)

int main();

if(c)unite(u,v);

} for(int i=1;i<=m;i++)

} if(cnt>k)

for(int i=1;i<=n;i++)fa[i]=i;

for(int i=1;i<=cnt;i++)

unite(e[ans[i]].u,e[ans[i]].v);

for(int i=1;i<=m;i++)

} if(cntfor(int i=1;i<=m;i++)

} if(cntfor(int i=1;iprintf("%d %d %d\n",e[ans[i]].u,e[ans[i]].v,e[ans[i]].c);

return 0;

}

APIO2008 免費道路

kruskal 好題 0 邊的數量在某些情況下是可以無限制的調控的,前提是所有必須存在的邊都在生成樹里了 所以應該分別求出有哪些邊是必須在生成樹里的,我們可以先從大到小排序,求出有哪些 0 邊必須在生成樹里,之後再從小到大排序,求出那些 1 邊必須在生成樹里 之後剩下的邊就可以隨便放了,調控 0 邊...

APIO2008 免費道路 生成樹

新亞 new asia 王國有 n 個村莊,由 m 條道路連線。其中一些道路是鵝卵石路,而其它道路是水泥路。保持道路免費執行需要一大筆費用,並且看上去 王國不可能保持所有道路免費。為此亟待制定乙個新的道路維護計畫。國王已決定保持盡可能少的道路免費,但是兩個不同的村莊之間都應該一條且僅由一條 且僅由一...

APIO2008 免費道路 克魯斯卡爾專精

題面 給定一張n個點m條邊的無向圖 不保證聯通 其中圖上每個邊都有顏色 黑白 現在要構造一棵生成樹,使樹上黑邊數量等於k,如果不存在合法的構造方案,輸出 no solution k 2 10 4k k2 104m 10 5m le10 5 m 105題解 首先考慮什麼時候會no solotion 圖...