凱凱的工廠正在有條不紊地生產一種神奇的零件,神奇的零件的生產過程自然也很神奇。工廠裡有n位工人,工人們從1~n編號。某些工人之間存在雙向的零件傳送帶。保證每兩名工人之間最多隻存在一條傳送帶。
如果x號工人想生產乙個被加工到第l(l>1)階段的零件,則所有與 xx 號工人有傳送帶直接相連的工人,都需要生產乙個被加工到第l - 1階段的零件(但x號工人自己無需生產第l - 1階段的零件)。
如果x號工人想生產乙個被加工到第1階段的零件,則所有與x號工人有傳送帶直接相連的工人,都需要為x號工人提供乙個原材料。
軒軒是1號工人。現在給出q張工單,第i張工單表示編號為ai的工人想生產乙個第li階段的零件。軒軒想知道對於每張工單,他是否需要給別人提供原材料。他知道聰明的你一定可以幫他計算出來!
輸入格式
第一行三個正整數n,m和q,分別表示工人的數目、傳送帶的數目和工單的數目。
接下來m行,每行兩個正整數u和v,表示編號為u和v的工人之間存在一條零件傳輸帶。保證u≠v。
接下來q行,每行兩個正整數a和l,表示編號為a的工人想生產乙個第l階段的零件。
輸出格式
共q行,每行乙個字串yes或者no。如果按照第i張工單生產,需要編號為1的軒軒提供原材料,則在第 ii 行輸出yes;否則在第i行輸出no。注意輸出不含引號。
輸入#13 2 6
1 22 3
1 12 1
3 11 2
2 23 2
輸出#1noyes
noyes
noyes
csp2019普及組第四題
這種題一看就是圖論題,但是最開始我沒有想到是最短路問題。其實只要仔細想一下,l代表的其實就是最短路所需的權值,你把1到每個點的最短路的值都求出來,再與之每乙個詢問中的l比較,看能否到達即可。
還有乙個要注意的地方是,1到每個點的距離分奇數距離與偶數距離,所以比較就要根據l的奇偶性來比較。
#include
using
namespace std;
const
int n=
2e5+10;
const
int m=
2*n;
typedef
long
long ll;
int n,m,q;
int first[n]
,w[m]
,to[m]
,next[m]
,tot=1;
queue<
int> que;
int dis[n]
,vis[n]
;void
add(
int x,
int y,
int z)
bool
solve
(int a,
int l)
void
spfa
(int s)}}
}int
main()
spfa(1
);for(
int i=
1,a,l;i<=q;i++
)return0;
}
太醜的話見諒見諒。 洛谷2066 機器分配
總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入格式 第一行有兩個數,第乙個數是分公司數n...
洛谷P2066 機器分配
一 此題資料範圍很小,所以可用搜尋。用b陣列記錄每次的路徑,最後到達終點並比較,如果結果更大,則用c陣列更新路徑。include includeusing namespace std int n,m,a 20 20 ans,b 20 c 20 void dfs int x,int y,int z r...
洛谷P2066 機器分配
總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入格式 第一行有兩個數,第乙個數是分公司數n...