miércoles, 21 de diciembre de 2016

QUITAR IMPRESORA SIN CONEXION WINDOWS 8

clic derecho en la impresora->ver lo que esta imprimiendo, 
se abrirá una ventana y luego clic en el menú Impresora y desactivar Usar impresora sin conexión

sábado, 10 de diciembre de 2016

Instalar emmet sublime text 3 en windows 8.1 y configuracion

Fuente: https://packagecontrol.io/installation
The simplest method of installation is through the Sublime Text console. The console is accessed via the ctrl+` shortcut or the View > Show Consolemenu. Once open, paste the appropriate Python code for your version of Sublime Text into the console.

Me salia un error:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Program Files (x86)\\Sublime_Text\\Data\\Installed Packages\\Package Control.sublime-package'

Parece que es debido a que no se ejecuto sublime text como administrador luego ya no salio errores.

Luego hay que reiniciar sublime text
y Aparecera package control en el menu preferences.
elegimos la opcion install packages y se actualizará el repositorio luego de nuevo elegimos la opcion y nos aparecera la opcion para buscar y escribimos emmet, y reiniciamos
antes se llamaba zen coding

***
Menu Preferences-> Key Bindings - User para tooglear de a comentarios
[
   { "keys": ["ctrl+7"], "command": "toggle_comment", "args": { "block": false } },
   { "keys": ["ctrl+shift+7"], "command": "toggle_comment", "args": { "block": true } }
]
Menu Preferences-> Settings - User - Para mostrar puntos o tabs de identacion

"draw_white_space": "all",
(la coma es de acuerdo donde pongas esa opcion)

sábado, 3 de diciembre de 2016

jueves, 1 de diciembre de 2016

problemas dominio windows

http://www.sysadmit.com/2015/08/mware-y-ad-la-relacion-de-confianza-entre-esta-estacion-de-trabajo-y-el-dominio-principal-fallo.html
http://www.preguntaserver.com/84/error-confianza-entre-estacion-trabajo-dominio-principal

sábado, 26 de noviembre de 2016

Como poner la barra de idioma en windows 8.1

https://www.youtube.com/watch?v=4EnXogAC8Mw
Fix: Language bar missing from taskbar windows 8 and 8.1 I Notification area icon

sábado, 19 de noviembre de 2016

agregar impresora en windows 8

http://tipsandtrickwindows8.blogspot.pe/2011/09/how-to-add-local-printer-or-network.html
http://www.dummies.com/computers/operating-systems/windows-8/how-to-add-a-printer-to-a-windows-8-computer/
http://www.full-windows8.com/2011/09/how-to-add-local-printer-or-network.html
https://www.youtube.com/watch?v=32zRGzspUUg

configurar protector de pantalla windows 10

http://www.tecnicomo.com/windows/como-configurar-el-protector-de-pantalla-en-windows-10/
https://www.youtube.com/watch?v=l6H255QBMZs
ICONOS ESCRITORIO https://xpertix.com/mostrar-icono-este-equipo-windows-10/

domingo, 31 de julio de 2016

Error 262 al crear una base de datos SQL SERVER

ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.Express.ConnectionInfo)
------------------------------
CREATE DATABASE permission denied in database 'master'. (Microsoft SQL Server, Error: 262)


Al crear una base de datos con windows 8 y SQL SERVER 2012 parece que es problema de insuficientes permisos, al parecer debí agregarselo al momento de instalacion el rol de sys admin al usuario actual de windows

Are you a member of the sysadmin role? 
When you installed it, there was a page where you specified who should be sys admins for the instance. It doesn't sound like you used the right options (one of them was to Add Current User) (unless this is Express)

Como lo solucione?
Right-click and run "SQL Server Management Studio" as administrator.
In SQL Server Management Studio, connect to an instance of SQL Server.
Click en la carpeta Security para que se expanda luego,  right-click Logins, and then click New Login.
In the Login name box, enter the user name. (en vez de eso, use el boton search y busque mi usuario actual y salio TOSHIBANOTEBOOK\USUARIO ) luego pasamos a la ventana izquierda,
En la ventada izquierda llamada  Select a page, hacemos clic Server Roles, select the sysadmin check box, and then click OK.

http://stackoverflow.com/questions/24198458/how-to-fix-microsoft-sql-server-error-262
http://stackoverflow.com/questions/14625682/create-database-permission-denied-error
https://social.msdn.microsoft.com/Forums/es-ES/b6f73e14-268f-425d-b62e-ee9c2bf023f6/error-262-al-crear-nueva-base-de-datos?forum=sqlserveres

viernes, 29 de julio de 2016

Herramientas .net


Herramientas
interfaces con devexpress
FxCop, ReSharer, CodeRush, Stylecop, Pex and Molex, Visual Studio for Database Developers,
Codedoom,  Roslyn

http://geeks.ms/jirigoyen/

miércoles, 20 de julio de 2016

Configurarcion XDEBUG en netbeans para depurar php ADEMAS DE ECLIPSE

https://www.youtube.com/watch?v=k4ByadtSra8
de la parte de [XDebug] y descomenta :
zend_extension = "\xampp\php\ext\php_xdebug.dll"

descomenta y cambia el valor a
xdebug.remote_enable = 1

descomenta
;xdebug.remote_handler = "dbgp"
;xdebug.remote_host = "127.0.0.1"
;xdebug.trace_output_dir = "\xampp\tmp"

Error :solo es necesario reinicia el servicio de apache no el mysql

Para ejecutar error mio hacia clic en Run Project en realidad es  Debug Project
Menu debug -> Debug project o ctrl + F5 o desde el icono de la barra de herramientas.

En chrome tiene que salir algo como esto  en la barra de direcciones
http://localhost/debug/index.php?XDEBUG_SESSION_START=netbeans-xdebug

otro enlace de netbeans que encontre pero no me ayudo de mucho:
http://wiki.netbeans.org/HowToConfigureXDebug
------------------------
Enseña solo una parte
https://www.youtube.com/watch?v=Dz8K0fkbUEo&spfreload=10
en php.ini en la parte de [XDebug]
descomenta:
zend_extension = "\xampp\php\ext\php_xdebug.dll"
y descomenta y cambia el valor a:
xdebug.remote_enable = 1
y reinicia el servicio de apache.
-------------------
En
https://www.youtube.com/watch?v=9yzkxpxCmNM con http://otroblogmas.com/configurar-xampp-para-debugar-con-xdebug-en-netbeans/
Agrega que  suele deseleccionar en
Menu options->PHP-> debugging, la opción: Stop a
t the first line
*No tengo el parametro remote_port
************
En chrome Tiene que salir algo como esto  en la barra de direcciones
http://localhost/debug/index.php?XDEBUG_SESSION_START=netbeans-xdebug
*************
PARA ECLIPSE
https://www.youtube.com/watch?v=Dm2ivX3uwR4
Camino mas facil descargar Eclipse for PHP developers
https://www.youtube.com/watch?v=kB6uB9dgaT4



*OTRO METODO: Mediante plugin PDT integrado (PHP Development Tools):

ENSEÑA A CONFIGURAR EL PDT A XDEBUG
https://www.youtube.com/watch?v=Dm2ivX3uwR4

Solo enseñan a instalar el pdt no ha configurar el XDEBUG
https://www.youtube.com/watch?v=bTKuZ7TAxVw

http://blog.idominiun.com/comentarios/105.html
https://www.youtube.com/watch?v=b2Ea_QwprNM

https://anibalismo.wordpress.com/2012/05/19/instalar-plugin-de-php-al-eclipse-para-no-tener-que-bajar-el-pdt/


El siguiente enlace habla de las versiones de eclipse y PDT
http://www.mclibre.org/consultar/php/otros/in_eclipse_instalacion.html
http://www.desarrolloweb.com/articulos/instalar-pdt.html
*************
informacion generica
https://xdebug.org/docs/all_settings

domingo, 17 de julio de 2016

Why does my download stop before it is finished?

Download termination and latency

As we mentioned previously, many problems are caused by issues with your Internet Service Provider. Usually, these issues result in highlatency or lag, which in turn cause your download to fail. When this occurs, it is problematic in that your Internet cache may "think" the download was completed, thus making the browser not want to resume. One solution is to clear the temporary internet files under the History section in your browser and try the download again.

Longitud maxima de una URL Y rutas de windows XP, 7

¿Longitud máxima de solicitud HTTP GET?

¿Cuál es la longitud máxima de una solicitud HTTP GET? ¿Es que un error de respuesta definido que el servidor puede/debe volver que si recibe una solicitud GET excede esta longitud?
---
Actualización: como se indica en las etiquetas, esto es en el contexto de una API de servicio web, aunque es interesante ver los límites del navegador también.
El límite es dependiente en el servidor y el cliente (y en su caso, también el proxy el servidor o el cliente está utilizando).
La mayoría de servidores Web tiene un límite de 8192 bytes (8KB), que es generalmente configurable en algún lugar de la configuración del servidor. En cuanto a lo del lado del cliente, la especificación de HTTP 1.1 incluso advierte acerca de esto, aquí es un extracto de chapter 3.2.1:
Nota: Servidores deben ser cuidadoso acerca de dependiendo de la longitud de la URI encima de 255 bytes, porque algunos clientes antiguos o implementaciones proxy podrían no admitir correctamente estas longitudes.
El límite es en MSIE y Safari cerca de 2KB, en la ópera cerca de 4KB y en Firefox unos 8KB. Por lo tanto podemos asumir que 8KB es la máxima longitud posible y que 2KB es una longitud más rentable confiar en el lado del servidor y que 255 bytes es la longitud más segura asumir que toda la URL vendrá.
Si se supera el límite en el navegador o el servidor, la mayoría solo truncará los personajes fuera del límite sin previo aviso. algunos servidores sin embargo pueden enviar un HTTP 414 error. Si usted necesita enviar datos grandes, entonces mejor usar POST en vez de GET. Su límite es muchomayor, pero más dependientes en el servidor utilizan que el cliente. Generalmente hasta alrededor de 2 GB es permitido por el servidor Web promedio. Esto también es configurable en algún lugar de la configuración del servidor. El media server mostrará una error/excepción de servidor específica cuando se supera el límite, generalmente como error HTTP 500.
************
Otro aporte
http://jms32.blogspot.pe/2015/03/las-longitudes-maximas-de-url.html
**************
Windows 

Existe la creencia de que Windows no soporta paths de más de 256 caracteres. Esta limitación está heredada de versiones anteriores en las que los sistemas de ficheros no permitían direccionar rutas más largas. Recordemos también que MS-DOS imponía la limitación del nombre de fichero a 8 caracteres más 3 de extensión. Por cierto, de ahí viene también la creencia de que Windows no soporta extensiones de más de 3 caracteres.
Por convenio los path en Windows no pueden superar los 260 caracteres (sí, 260, no 256). Esto puede encontrarse en la documentación de las APIs. Sin embargo, esta limitación está impuesta por la API de Win32 y no por el sistema de ficheros NTFS, que sí soporta paths de mayor longitud.
La mayoría de las aplicaciones Windows respetan el convenio de nomenclatura, lo que significa que un PATH no puede exceder los 260 caracteres y cada componente del Path tampoco puede superar los 260 caracteres. Ahora bien, hemos dicho que la limitación es un convenio que impone la API Win32. Esto no significa que no se puedan crear paths de mayor longitud, simplemente que está desaconsejado.
Algunas APIs Win32 incorporan un sistema para eliminar esta restricción. Es el caso de CreateDirectory. Con el siguiente ejemplo vamos a crear la ruta C:\<200Caracteres>\<200 Caracteres>\<200 Caracteres>.<3 caracteres>. Eso es un Path de 608 caracteres (excluyendo el marcador NULL). He parado en 608 porque me estaba haciendo un lio al copiar y pegar, pero podríamos llegar a 32767 caracteres sin despeinarnos :)
...
http://www.carballude.es/blog/2013/06/14/cosas-que-no-puedes-hacer-en-windows-tener-paths-de-mas-de-256-caracteres/
http://migueltechnologies.blogspot.pe/2008/11/longitud-maxima-del-path-en-windows.html

sábado, 16 de julio de 2016

group by

La cláusula GROUP BY se usa para generar valores de agregado para cada fila del conjunto de resultados. Cuando se usan sin una cláusula GROUP BY, las funciones de agregado sólo devuelven un valor de agregado para una instrucción SELECT.
En el ejemplo siguiente se calcula el total de cada pedido de ventas de la base de datos.
USE AdventureWorks;
GO
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail sod
GROUP BY SalesOrderID
ORDER BY SalesOrderID ;
GO
Después de las palabras clave GROUP BY aparece una lista de columnas, conocidas como las columnas de agrupación. La cláusula GROUP BY restringe las filas del conjunto de resultados; sólo hay una fila por cada valor distintivo de las columnas de agrupación. Cada fila del conjunto de resultados contiene los datos de resumen relacionados con el valor específico de sus columnas de agrupación.
Los elementos que se pueden especificar en la lista de selección cuando una instrucción SELECT contiene una cláusula GROUP BY están restringidos. Los elementos permitidos en la lista de selección son los siguientes:
  • Las columnas de agrupación.
  • Expresiones que devuelven un solo valor por cada valor de las columnas de agrupación, por ejemplo, las funciones de agregado que tienen un nombre de columna como uno de sus parámetros. Se conocen como agregados vectoriales.

Como sacar la opcion agrupar por group by en access

La opcion agrupar por no sabe aparecer en el diseñador de consultas para que aparezca tenemos que apretar total (EL SIMBOLO DE SIGMA GIGANTE Y ALLI SI APARECERA)

Source:
https://www.youtube.com/watch?v=K70QnTfGjoM (minuto 3:35'')

domingo, 10 de julio de 2016

Ejercicio de Redes

http://www.ciclodeinformatica.es/2013/04/ejercicios-resueltos-de-division-en.html
http://www.calculadora-redes.com/
http://www.aprendaredes.com/cgi-bin/ipcalc/ipcalc_cgi

sábado, 9 de julio de 2016

El maximo valor de enteros en java y el 0x3f3f3f3f

stackoverflow.com/questions/5771520/why-is-the-maximum-value-of-an-unsigned-n-bit-integer-2n-1-and-not-2n

porque teniendo un valor entero de 32 bits su maximo valor es 2^31-1 y no 2^31-1 
Respuesta

@HardikThaker - Yes, it does. (Actually, in Java, Integer.MAX_VALUE--for 32 bit integers--is 2^31 - 1 andLong.MAX_VALUE--for 64 bit integers--is 2^63 - 1 because the sign bit is reserved.) – Ted Hopp Sep 29 '13 at 0:03 


ADEMAS que es el  0x3f3f3f3f

0x3f3f3f3f; // Numero muy grande para que no afecte al minHeap.

 //memset(m,0x3f,sizeof(m));

0x3f3f3f3f + 0x3f3f3f3f doesn't overflow int32

http://prog3.com/sbdm/blog/u013163567/article/details/19837805
http://ideone.com/cqFDL5
http://stackoverflow.com/questions/18429021/why-is-infinity-0x3f3f3f3f

Codeforces Round #361 (Div. 2) B



import java.io.*;
import java.util.*;
public class B1 {
 public static void main(String[] args) throws IOException{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  int n = Integer.parseInt(br.readLine());
  int[] a = new int[n+1];
  int[] dp = new int[n+1];
  StringTokenizer st = new StringTokenizer(br.readLine());
  for(int i = 1; i <= n; i++) { a[i] = Integer.parseInt(st.nextToken()); dp[i] = Integer.MAX_VALUE;}
  dp[1] = 0;
  LinkedList<Integer> q = new LinkedList<Integer>();
  q.add(1);
  int cur;
  while(!q.isEmpty()) {
   cur = q.removeFirst();
   if(dp[a[cur]] > dp[cur]+1) {dp[a[cur]] = dp[cur]+1; q.add(a[cur]);}
   if(cur > 1 && dp[cur-1] > dp[cur]+1) {dp[cur-1] = dp[cur]+1; q.add(cur-1);}
   if(cur < n && dp[cur+1] > dp[cur]+1) {dp[cur+1] = dp[cur]+1; q.add(cur+1);}
  }
  for(int i = 1; i <= n; i++) { if(i > 1) System.out.print(" "); System.out.print(dp[i]);}
  System.out.println();
 }
}
************
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Round361B {

 
 static int N;
 static ArrayList<Pair> adjList[];
 static class Pair implements Comparable<Pair>{
  int v,w;
  public Pair(int x, int y)
  {
   v = x;
   w = y;
  }
  
  public int compareTo(Pair p) {
   return w - p.w;
  }
  
  
 }
 
 // O((V+E)log(V))
 static int[] dijkstra(int s)
 {
  PriorityQueue<Pair> q = new PriorityQueue<Pair>();
  int dist[] = new int[N];
  Arrays.fill(dist, (int)1e9);
  dist[s] = 0;
  
  q.add(new Pair(s,0));
  while(!q.isEmpty())
  {
   Pair p = q.remove();
   if(p.w > dist[p.v])
    continue;
   
   for(Pair v : adjList[p.v])
    if(dist[p.v] + v.w < dist[v.v])
    {
     dist[v.v] = dist[p.v] + v.w;
     q.add(new Pair(v.v, dist[v.v]));
    }
   
  }
  return dist;
  
 }
 public static void main(String[] args) throws NumberFormatException, IOException {
  Scanner sc = new Scanner(System.in);
  N = sc.nextInt();
  adjList = new ArrayList[N];
  for(int i=0; i<N; i++)
   adjList[i] = new ArrayList<Pair>();
  
  int a[] = new int[N];
  Arrays.fill(a, (int)1e9);
  int b[] = new int[N];
  for(int i=0; i<N; i++){
   a[i] = sc.nextInt()-1;
   b[i] = i;
  }
  
  for(int i=0; i<N; i++)
  {
   adjList[i].add(new Pair(a[i],1));
  }
  
  for(int i=1; i<N; i++)
  {

   adjList[0].add(new Pair(i,b[i]));
   adjList[i].add(new Pair(0,b[i]));
   if(i < N-1)
   {
    adjList[i].add(new Pair(i+1,1));
    adjList[i+1].add(new Pair(i,1));
   }
  }
  
  int dist[] = dijkstra(0);
  
  PrintWriter out = new PrintWriter(System.out);
  for(int x : dist)
   out.print(x+" ");
  out.println();
  out.flush();
  out.close();
  
  
 }
 static class Scanner {
  BufferedReader br;
  StringTokenizer st;

  Scanner(FileReader f) {
   br = new BufferedReader(f);
  }

  public boolean ready() throws IOException {
   return br.ready();
  }

  Scanner(InputStream s) {
   br = new BufferedReader(new InputStreamReader(s));
  }

  String next() throws IOException {
   while (st == null || !st.hasMoreTokens())
    st = new StringTokenizer(br.readLine());
   return st.nextToken();
  }

  String nextLine() throws IOException {
   return br.readLine();
  }

  int nextInt() throws NumberFormatException, IOException {
   return Integer.parseInt(next());
  }

  long nextLong() throws NumberFormatException, IOException {
   return Long.parseLong(next());
  }
 }
}

**************
import java.io.*;
import java.util.*;
 
public class Main{
 
 
 public void solve(){
  int N = nextInt();
  int[] A = new int[N];
  int[] d = new int[N];
  for(int i = 0; i < N; i++){
   A[i] = nextInt() - 1;
   d[i] = -1;
  }
  Queue<Integer> queue = new ArrayDeque<>();
  d[0] = 0;
  queue.add(0);
  while(!queue.isEmpty()){
   int idx = queue.poll();
   int n;
   n = d[idx] + 1;
   int ni = idx + 1;
   if(ni < N && d[ni] == -1){
    d[ni] = n;
    queue.add(ni);
   }
   ni = idx - 1;
   if(ni >= 0 && d[ni] == -1){
    d[ni] = n;
    queue.add(ni);
   }
   ni = A[idx];
   if(ni >= 0 && d[ni] == -1){
    d[ni] = n;
    queue.add(ni);
   }
  }
  
  out.print(d[0]);
  for(int i = 1; i < N; i++){
   out.print(" ");
   out.print(d[i]);
  }
  out.println();
 }
 
 private static PrintWriter out;
 public static void main(String[] args){
  out = new PrintWriter(System.out);
  new Main().solve();
  out.flush();
 }
 
 
 
 public static int nextInt(){
  int num = 0;
  String str = next();
  boolean minus = false;
  int i = 0;
  if(str.charAt(0) == '-'){
   minus = true;
   i++;
  }
  int len = str.length();
  for(;i < len; i++){
   char c = str.charAt(i);
   if(!('0' <= c && c <= '9')) throw new RuntimeException();
   num = num * 10 + (c - '0');
  }
  return minus ? -num : num;
 }
 
 public static long nextLong(){
  long num = 0;
  String str = next();
  boolean minus = false;
  int i = 0;
  if(str.charAt(0) == '-'){
   minus = true;
   i++;
  }
  int len = str.length();
  for(;i < len; i++){
   char c = str.charAt(i);
   if(!('0' <= c && c <= '9')) throw new RuntimeException();
   num = num * 10l + (c - '0');
  }
  return minus ? -num : num;
 }
 public static String next(){
  int c;
  while(!isAlNum(c = read())){}
  StringBuilder build = new StringBuilder();
  build.append((char)c);
  while(isAlNum(c = read())){
   build.append((char)c);
  }
  return build.toString();
 }
 
 
 private static byte[] inputBuffer = new byte[1024];
 private static int bufferLength = 0;
 private static int bufferIndex = 0;
 private static int read(){
  if(bufferLength < 0) throw new RuntimeException();
  if(bufferIndex >= bufferLength){
   try{
    bufferLength = System.in.read(inputBuffer);
    bufferIndex = 0;
   }catch(IOException e){
    throw new RuntimeException(e);
   }
   if(bufferLength <= 0) return (bufferLength = -1);
  }
  return inputBuffer[bufferIndex++];
 }
 
 private static boolean isAlNum(int c){
  return '!' <= c && c <= '~';
 }
}

**********
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

/**
 * @author Don Li
 */
public class MikeShortcuts {

    void solve() {
        int n = in.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) a[i] = in.nextInt() - 1;

        int[] d = new int[n];
        Arrays.fill(d, -1);
        Queue<Integer> qu = new LinkedList<>();
        d[0] = 0;
        qu.offer(0);
        while (!qu.isEmpty()) {
            int i = qu.poll();
            if (i - 1 >= 0 && d[i - 1] == -1) {
                d[i - 1] = d[i] + 1;
                qu.offer(i - 1);
            }
            if (i + 1 < n && d[i + 1] == -1) {
                d[i + 1] = d[i] + 1;
                qu.offer(i + 1);
            }
            if (d[a[i]] == -1) {
                d[a[i]] = d[i] + 1;
                qu.offer(a[i]);
            }
        }

        for (int i = 0; i < n; i++) {
            if (i > 0) out.print(' ');
            out.print(d[i]);
        }
        out.println();
    }

    public static void main(String[] args) {
        in = new FastScanner(new BufferedReader(new InputStreamReader(System.in)));
        out = new PrintWriter(System.out);
        new MikeShortcuts().solve();
        out.close();
    }

    static FastScanner in;
    static PrintWriter out;

    static class FastScanner {
        BufferedReader in;
        StringTokenizer st;

        public FastScanner(BufferedReader in) {
            this.in = in;
        }

        public String nextToken() {
            while (st == null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(in.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(nextToken());
        }

        public long nextLong() {
            return Long.parseLong(nextToken());
        }

        public double nextDouble() {
            return Double.parseDouble(nextToken());
        }
    }
}
************


import java.io.*;
import java.util.*;
public class B1 {
 public static void main(String[] args) throws IOException{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  int n = Integer.parseInt(br.readLine());
  int[] a = new int[n+1];
  int[] dp = new int[n+1];
  StringTokenizer st = new StringTokenizer(br.readLine());
  for(int i = 1; i <= n; i++) { a[i] = Integer.parseInt(st.nextToken()); dp[i] = Integer.MAX_VALUE;}
  dp[1] = 0;
  LinkedList<Integer> q = new LinkedList<Integer>();
  q.add(1);
  int cur;
  while(!q.isEmpty()) {
   cur = q.removeFirst();
   if(dp[a[cur]] > dp[cur]+1) {dp[a[cur]] = dp[cur]+1; q.add(a[cur]);}
   if(cur > 1 && dp[cur-1] > dp[cur]+1) {dp[cur-1] = dp[cur]+1; q.add(cur-1);}
   if(cur < n && dp[cur+1] > dp[cur]+1) {dp[cur+1] = dp[cur]+1; q.add(cur+1);}
  }
  for(int i = 1; i <= n; i++) { if(i > 1) System.out.print(" "); System.out.print(dp[i]);}
  System.out.println();
 }
}