Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n;
- int m;
- int s;
- int t;
- queue<int> q;
- cin >> n >> m>> t;
- int k[n];
- vector<vector<int>> a;
- a.resize(n);
- for(int i = 0; i < n; i++)
- a[i].resize(0);
- int found[n];
- int sum = 0;
- for(int i = 0; i < n; i++){
- cin >> k[i];
- //sum = sum + k[i];
- found[i] = -1;
- }
- int x;
- int y;
- for(int i = 0; i < m; i++)
- {
- cin>> x>> y;
- x--;
- y--;
- a[x].resize(a[x].size() + 1);
- a[y].resize(a[y].size() + 1);
- a[x][a[x].size() - 1] = y;
- a[y][a[y].size() - 1] = x;
- }
- int w;
- cin>> s>> w;
- s--;
- q.push(s);
- found[s] = 0;
- int ans = -1;
- int v;
- while (!q.empty() && ans == -1) {
- v = q.front();
- q.pop();
- for (int i = 0; i < a[v].size(); i++) {
- //cout << "kek" << v << ' ' << k<< ' ' << "kek";
- if(found[a[v][i]] == -1) {
- // cout << "kek" << v << ' ' << k<< "kek";
- found[a[v][i]] = found[v] + 1;
- q.push(i);
- }
- }
- }
- for(int i = 0; i < n; i++)
- {
- // cout << found[i]<< " ";
- }
- cout << endl;
- int j = 0;
- int minn;
- while (ans == -1)
- {
- for(int i = 0; i < n; i++){
- //cout << found[i]<< " "<<j << endl;
- if(found[i] == j){
- //cout << "kek";
- sum += k[i];
- }
- }
- // cout<< j<<" "<< sum<< " "<< w<< " "<< t<<endl;
- minn = min(sum,min( w, t));
- sum = sum - minn;
- w = w - minn;
- if(w == 0)
- ans = 0;
- if(sum == 0 && w !=0)
- ans = 1;
- // cout<< j<<" "<< sum<< " "<< w<< " "<< t<<endl<< endl;
- j++;
- }
- if(ans == 0)
- cout << "NO";
- else
- cout << "YES";
- return 0; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement