FZOJ 2210 攻占計畫

2021-08-06 06:42:07 字數 1781 閱讀 5681

time limit: 1000 msec  memory limit : 131072 kb

problem description

a國和b國正在進行一場戰爭,a國有n座城市,這些城市被m條有向道路相連,這些道路不會形成環路。其中有一部分城市比較特殊,其擁有糧倉,擁有糧倉的城市不能被其他城市到達,糧食可以從糧倉經過一些道路送往任意一座城市,現在b國的國王想要破壞一座a國的城市,糧食不能經過被破壞的城市。問破壞哪一座城市,可以使得最多的城市斷糧。

input

第一行兩個數n和m(n<=1000,m<=10000)

接下來m行,每行兩個數字a和b,表示城市a有一條連向城市b的道路

output

輸出乙個數,表示被破壞的城市的序號,如果有多個城市滿足條件,輸出序號最小的那個城市

sample input

3 3

1 2

2 3

1 3

sample output

source

foj有獎月賽-2023年11月

題意:a有n個節點,m條有向邊,而糧倉在的節點是只有出度沒有入度的。想想是不是把那個只有出度沒有入度的點拿掉是不是b 的陰謀就達到了呢?貌似這樣做wa了。腦子裡鬼使神差的想到會不會是要找那個出度最多的那個點呢?最後果然是這樣的。(剛學並查集,所以用並查集做的,直接統計輸入資料應該也能過)

ac**:

(並查集)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef

long

long ll;

const

int maxn=1000+5;

using

namespace

std;

int root[maxn];

int rank[maxn];

void make_set(int x)

}int find_set(int x)

return x;

}void union_set(int a,int b)

}int main()

m=rank[1];

ans=1;

for(i=2;i<=n;i++)

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

}return

0;}

(一般解法)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef

long

long ll;

const

int maxn=1000+5;

using

namespace

std;

int du[maxn];

int main()

mx=du[1];

ans=1;

for(i=2;i<=n;i++)

return

0;}

fzoj 2119 祖先問題

problem 2119 祖先問題 有n個結點構成了多棵樹,給出每個結點的父節點,若為 1則表示該結點無父節點。每個結點的父節點編號必須比該結點的編號小。給m個操作,有兩種操作 1.重新設定某結點的父節點 2.求某結點的祖先個數。乙個結點的祖先為其父節點及其父節點的祖先。有多組資料輸入。每組資料的第...

FZOJ 4112 脫單計畫

這是一道費用流的好題。首先題目給你的男士女士以及之間的關係可以看做乙個二分圖。考慮暴力連邊 用 x,y 表示流量為 x 費用為 y 的邊 然後時間複雜度是 o nmf 不能通過此題。考慮暴力連邊邊的數量是 o n 2 級別的,是否能減少連邊的數量。現在假設每個男士小區和女士小區的距離為 x1 y1 ...

2 2 1 殘缺棋盤

殘缺棋盤 defective chessboard 是乙個有2k 2k 個方格的棋盤,其中恰有乙個方格殘缺。圖2 3給出k 2時各種可能的殘缺棋盤,其中殘缺的方格用陰影表示。注意當k 0時,僅存在一種可能的殘缺棋盤 如圖1 4 3 a所示 事實上,對於任意k,恰好存在22k 種不同的殘缺棋盤。殘缺棋...