import java.io.*; import java.util.*; class Main { static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); public static void main(String args[]) throws Exception { Main myWork = new Main(); // create a dinamic instance myWork.Begin(); // the true entry point } void Begin() throws Exception { int cont = 0; while(true) { cont++; // Cada caso comienza con un numero de equipos t entre 1 y 1000 int t = Integer.parseInt(in.readLine()); if(t==0) break; // Si t=0, el proceso termina System.out.println("Scenario #" + cont); // En este mapa se relaciona cada elemento con el equipo al que pertenece Map<Integer, Integer> mapa = new HashMap<Integer, Integer>(); // Para cada uno de los equipos for (int i=0; i<t; i++) { String[] tmp = in.readLine().split("\\s+"); // El primer número de la línea es la cantidad de miembros del equipo int numMiembros = Integer.parseInt(tmp[0]); for (int j = 1; j<=numMiembros; j++) { mapa.put(Integer.parseInt(tmp[j]), i); // Cada miembro se guarda en el mapa } } String instruccion; Queue<Queue> colaE = new LinkedList<Queue>(); // Cola de colas do { // Cada renglón es una instruccion ENQUEUE, DEQUEUE o STOP String[] tmp = in.readLine().split("\\s+"); instruccion = tmp[0]; // Si es ENQUEUE la segunda parte de la instrucción es el valor a encolar if(instruccion.equals("ENQUEUE")) { int valor = Integer.parseInt(tmp[1]); // Valor a encolar int equipo = mapa.get(valor); // Equipo al que pertenece boolean flag = true; // Identifica si en la cola hay algún miembro de su equipo for (Queue<Integer> x : colaE) { if (x.isEmpty()) colaE.remove(x); if (!x.isEmpty()) { // Si hay un miembro del equipo se agrega al final de esa subcola if (mapa.get(x.peek()) == equipo) { x.add(valor); flag = false; break; } } } if(flag) { // Si no hay miembros del equipo en la cola, crea una nueva subcola y se agrega Queue<Integer> temporal = new LinkedList<Integer>(); temporal.add(valor); colaE.add(temporal); } } // Si es DEQUEUE se eliminan las subcolas vacías y se retira el primer elemento if (instruccion.equals("DEQUEUE")) { while (colaE.peek().size() == 0) colaE.remove(); System.out.println(colaE.peek().poll()); } if(instruccion.equals("STOP")) System.out.println(); } while (!instruccion.equals("STOP")); } } }
Soluciones a problemas comunes de programación en lenguaje java.
lunes, diciembre 13, 2010
Cola de Equipo - Problema UVA 540
El problema de colas de equipo se puede resolver en java utilizando una cola de colas. El enunciado del mismo se encuentra en el enlace http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=481
Suscribirse a:
Comentarios de la entrada (Atom)
Multiprocesamiento recursivo en JAVA 7
Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...
-
El algoritmo de ordenación por montículos o Heap Sort recorre el conjunto de elementos desde la posición de la mitad hasta la primera organi...
-
Generación con sustitución Si se quieren generar todas las posibles cadenas que se forman con un determinado número de caracteres, una pri...
-
Para solucionar el problema de la ruta más corta entre dos nodos de un grafo se puede utilizar el Algoritmo de Dijkstra , el cual sigue el s...
nike air max 2019
ResponderBorrarnike air max 270
hermes online
longchamp bags
nike air max
yeezy shoes
cheap jordans
adidas tubular
nike kyrie 5
air jordans
xiaofang20191218
Casinos Near Me - CBSDetroit.com
ResponderBorrarCasinos Near Me · East 용인 출장샵 Windsor, IA · 나주 출장샵 Grand Rapids, MI · Columbus, OH · Dayton, 강원도 출장안마 OH · 의정부 출장마사지 Harrah's Cherokee Casino Resort · 고양 출장마사지 Pittsburgh, PA · Fairfield, MI
yeezy boost 350
ResponderBorrarkyrie shoes
kyrie 8 shoes
off white
hermes outlet
goyard bag
jordan 6
off white
jordan
kyrie 7
supreme new york
ResponderBorrarbape hoodie
supreme
bape
kobe
pg 4
off white jordan 1
off white