洛谷5663 工作分配

2021-10-01 11:20:23 字數 2463 閱讀 7019

凱凱的工廠正在有條不紊地生產一種神奇的零件,神奇的零件的生產過程自然也很神奇。工廠裡有n位工人,工人們從1~n編號。某些工人之間存在雙向的零件傳送帶。保證每兩名工人之間最多隻存在一條傳送帶。

如果x號工人想生產乙個被加工到第l(l>1)階段的零件,則所有與 xx 號工人有傳送帶直接相連的工人,都需要生產乙個被加工到第l - 1階段的零件(但x號工人自己無需生產第l - 1階段的零件)。

如果x號工人想生產乙個被加工到第1階段的零件,則所有x號工人有傳送帶直接相連的工人,都需要為x號工人提供乙個原材料。

軒軒是1號工人。現在給出q張工單,第i張工單表示編號為ai的工人想生產乙個第li階段的零件。軒軒想知道對於每張工單,他是否需要給別人提供原材料。他知道聰明的你一定可以幫他計算出來!

輸入格式

第一行三個正整數nmq,分別表示工人的數目、傳送帶的數目和工單的數目。

接下來m行,每行兩個正整數uv,表示編號為uv的工人之間存在一條零件傳輸帶。保證u≠v

接下來q行,每行兩個正整數al,表示編號為a的工人想生產乙個第l階段的零件。

輸出格式

q行,每行乙個字串yes或者no。如果按照第i張工單生產,需要編號為1的軒軒提供原材料,則在第 ii 行輸出yes;否則在第i行輸出no。注意輸出不含引號。

輸入#1

3 2 6

1 22 3

1 12 1

3 11 2

2 23 2

輸出#1

noyes

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...