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 圖...