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 種不同的殘缺棋盤。殘缺棋...