看注釋就好了,我寫的還是比較仔細的。
//hdu 4587 tarjian 求割點
#include #include #include #include #include #define inf 0x3f3f3f3f
#define lowbit(x) ((x)&(-x))
#define maxn 20005
using namespace std;
int dfn[maxn],low[maxn],n,m,ans,head[maxn],cnt,cntt,fir,sum[maxn],tot,anss;
struct ee
eage[maxn*2];
void add(int a,int b)
void init()
void tarjian(int a,int b)
}else
low[a]=min(low[a],dfn[j]);
}if(b!=-1) //注意第乙個列舉的點由於沒有父節點要減去1,後面的節點有父節點就不用減1.
ans=max(ans,sum[a]);
else
ans=max(ans,sum[a]-1);
//printf("fir=%d a=%d sum=%d\n",fir,a,sum[a]);
}void solve()
{ for(int i=0;i
HDU 4587 邊雙聯通
題意 給你n個點,m條邊,要你刪除兩個點以及和這兩個點直接相連的邊,問你剩下的圖中,最大的連通分量的數目。分析 我們可以列舉每個點,然後看剩下的圖中是否有割點,這裡需要注意,乙個單獨的連通分量刪除就沒有了,坑點在這裡!include include include include include u...
hdu 求平均成績
假設乙個班有n n 50 個學生,每人考m m 5 門課,求每個學生的平均成績和每門課的平均成績,並輸出各科成績均大於等於平均成績的學生數量。input 輸入資料有多個測試例項,每個測試例項的第一行包括兩個整數n和m,分別表示學生數和課程數。然後是n行資料,每行包括m個整數 即 考試分數 outpu...
hdu 1394 求逆序數(線段樹求)
題意描述 給你乙個有0 n 1數字組成的序列,然後進行這樣的操作,每次將最前面乙個元素放到最後面去會得到乙個序列,那麼這樣就形成了n個序列,那麼每個序列都有乙個逆序數,找出其中最小的乙個輸出!解析 求出a1,a2,an 1,an的逆序數之後,就可以遞推求出其他序列的逆序數。假設要把a1移動到an之後...