UOJ67 新年的毒瘤

2022-05-08 04:57:08 字數 1069 閱讀 4994

作者部落格:

解題報告:

考慮能變成一棵樹,肯定說明至少選擇的點不是割點,其次題解裡面說了這個點的度數有特定的要求...

那麼就變成簡單題了...

只需找出不是割點且度數=m-(n-2)的點即可。

注意有一些奇怪的邊界條件...

(不要想當然的以為m=n-1答案是0...)

//it is made by ljh2000

#include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const int maxn = 100011;

const int maxm = 200011;

int n,m,d[maxn],ecnt,first[maxn],next[maxm],to[maxm],dfn[maxn],low[maxn];

int ans,dui[maxn];

bool iscut[maxn];

//需要考慮單獨乙個點在乙個連通塊,而其餘的點構成一棵樹的情況...

inline int getint()

inline void tarjan(int x,int fa,int rt)

else low[x]=min(low[x],dfn[v]);

} if(size>1 && x==rt) iscut[x]=1;

}inline void work()

ecnt=0; int lim=m-(n-2);

for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i,-1,i);

for(int i=1;i<=n;i++) if(d[i]==lim && (!iscut[i])) dui[++ans]=i;

printf("%d\n",ans);

for(int i=1;i<=ans;i++) printf("%d ",dui[i]);

}int main()

UOJ 67 新年的毒瘤 Tarjan

uoj 一棵 n 個節點的樹顯然有 n 1 條邊,在本題中意味著刪去乙個點之後還剩下 n 2 條邊。那麼找到所有度數為 m n 2 的點就好了。但是因為是一棵樹,所以聯通,所以割點不是答案。include includeusing namespace std define ll long long ...

UOJ67 新年的毒瘤 Tarjan,割點

online judge uoj 67 label tarjan,割點,細節 辭舊迎新之際,喜羊羊正在打理羊村的綠化帶,然後他發現了一棵長著毒瘤的樹。這個長著毒瘤的樹可以用 n 個結點 m 條無向邊的無向圖表示。這個圖中有一些結點被稱作是毒瘤結點,即刪掉這個結點和與之相鄰的邊之後,這個圖會變為一棵樹...

uoj 176 新年的繁榮

給出乙個完全圖,邊權為兩點權值的and,求最大生成樹。這題用最小生成樹的boruvka演算法。大概就是每次找到每乙個聯通塊權值最大的邊,將這些聯通塊合併,直到只剩乙個聯通塊。因為每次聯通塊的個數至少減半,所以只會做log次操作。那麼這題相當於每個點有不同顏色,要找到每個點的異色點中最大的and值。扔...