很容易發現一點,題目要我們求的實際上就是我們的新構的樹中的,圓點的個數,所以呢,在這裡我們可以直接通過先利用廣義圓方樹來再求乙個虛樹,我們直接查詢虛樹就可以完成這個要求了。
#include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include #define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define inf 0x3f3f3f3f
#define half (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define lson lsn, l, mid
#define rson rsn, mid+1, r
#define ql lson, ql, qr
#define qr rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxn = 2e5 + 7;
int n, m, q, log2[maxn];
struct graph
} edge[maxn << 2];
inline void addeddge(int u, int v, int w)
inline void _add(int u, int v, int w)
inline void init()
} old, now;
struct tarjan_struct
while(v ^ p);
now._add(u, bcnt + n, 0);
}low[u] = min(low[u], low[v]);
}else low[u] = min(low[u], dfn[v]);}}
inline void clear()
} tj;
struct pre_build_graph
}void clear()
} pbg;
inline int _lca(int u, int v)
if(u == v) return u;
for(int i=log2[n]; i>=0; i--)
}return pbg.root[u][0];
}inline bool cmp(int e1, int e2)
int ans_sum, qid[maxn], stk[maxn], stp;
bool used[maxn] = ;
inline void insert(int u)
int lca = _lca(u, stk[stp]);
if(lca == stk[stp])
while(stp > 1 && pbg.dfn[lca] <= pbg.dfn[stk[stp - 1]])
if(lca ^ stk[stp])
stk[++stp] = u;
}inline void init()
int main()
log2[i] = k;
}int t; scanf("%d", &t);
while(t--)
tj.tarjan(1, 0);
pbg.pre_dfs(1, 0);
scanf("%d", &q);
int sz;
while(q--)
sort(qid + 1, qid + sz + 1, cmp);
stp = 0; ans_sum = 0;
for(int i=1; i<=sz; i++) insert(qid[i]);
while(stp > 1)
if(!used[stk[stp]] && stk[stp] <= n) ans_sum++;
for(int i=1; i<=sz; i++) used[qid[i]] = false;
printf("%d\n", ans_sum);}}
return 0;
}
SDOI2018 戰略遊戲
給定一張 n 個點 m 條邊的無向聯通圖,共有 q 次操作,每次操作選擇一些點作為關鍵點,詢問有多少個點滿足刪去該點及與其相鄰的邊後,至少有兩個關鍵點不能互相到達。n,q leq 10 5,m leq 2 cdot 10 5,sum s leq 2 cdot 10 5 還是挺簡單的。就是圓方樹 虛樹...
SDOI2018 戰略遊戲
題目 圓方樹其實並沒有那麼難 圓方樹的構建比較簡單,就是乙個tarjan把點雙跑出來,對於每乙個點雙我們多建乙個方點,把原圖中的點稱為圓點,將點雙內所有圓點向方點連邊,之後我們就得到了原圖的圓方樹 關於圓方樹的性質,zyb大爺在他的題解裡寫了很多,這裡就不再抄一遍了 至於這道題,就是把圓點拿出來建棵...
SDOI2018 戰略遊戲
time limit 30 sec memory limit 512 mb submit 12 solved 9 submit status discuss 省選臨近,放飛自我的小q無心刷題,於是慫恿小c和他一起頹廢,玩起了一款戰略遊戲。這款戰略遊戲的地圖由n個城市以及m條連線這些城市的雙向道路構成...