Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int[] bfs(int[][] matr, int nap, int n){
- int rast=0;
- Queue<Integer> a = new ArrayDeque<Integer>();
- int start=nap;
- a.add(start);
- int[] res=new int[n];
- boolean[] used=new boolean[n];
- used[start]=true;
- res[start]=0;
- while(!a.isEmpty()){
- int no=a.poll();
- for(int i=0;i<n;i++){
- if(matr[no][i]>0 && !used[i]){
- a.add(i);
- used[i]=true;
- res[i]=res[no]+1;
- }
- }
- }
- return res;
- }
- void solve() throws IOException{
- int n=readInt();
- int m=readInt();
- int t=readInt();
- int[] a = readIntArr(n);
- int[][] matr=new int[n][];
- for(int i=0;i<n;i++){
- matr[i]=new int[n];
- }
- for(int j=0;j<m;j++){
- int x=readInt()-1;
- int y=readInt()-1;
- matr[x][y]=1;
- matr[y][x]=1;
- }
- int nap=readInt()-1;
- int w=readInt();
- int[] rast=new int[n];
- rast=bfs(matr, nap, n);
- int[] pribav=new int[n];
- for(int i=0;i<n;i++){
- pribav[rast[i]]+=a[i];
- }
- int sold=a[nap];
- int index=1;
- while(w>0 || sold>0){
- int w1=w;
- w-=Math.min(Math.min(w, sold),t);
- sold-=Math.min(Math.min(w1,sold),t);
- if(w<=0){
- out.println("Vampires win");
- return;
- }
- if(sold<=0){
- out.println("Werewolves win");
- return;
- }
- if(index<n) {
- sold += pribav[index];
- }
- index++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement