<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2163_-_Episodul_3</id>
	<title>2163 - Episodul 3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2163_-_Episodul_3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;action=history"/>
	<updated>2026-05-01T06:38:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9792&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 13:17, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9792&amp;oldid=prev"/>
		<updated>2024-05-18T13:17:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:17, 18 May 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot;&gt;Line 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  2 1 1 2 2&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  2 1 1 2 2&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;episodul3OUT.txt&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;episodul3OUT.txt&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Datele nu corespund restrictiilor impuse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; 3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; 3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Rezolvare ==  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Rezolvare ==  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9791&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 13:16, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9791&amp;oldid=prev"/>
		<updated>2024-05-18T13:16:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;amp;diff=9791&amp;amp;oldid=9264&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9264&amp;oldid=prev</id>
		<title>Oros Ioana Diana: Pagină nouă: == Enunț ==  Zoli joacă cu un labirint de dimensiune N x N, format din camere de dimensiune 1 x 1, inițial toate inaccesibile. Auzind că Zoli este mare informatician, Dănutz și D’Umbră au decis să îl pună la încercare, după cum urmează:  1 x y: Dănutz transformă camera inaccesibilă (x, y) într-una accesibilă. &lt;br&gt; 2 x1 y1 x2 y2: D’Umbră îl întreabă pe Zoli care este numărul minim de camere ce trebuie traversate pentru a ajunge din camera accesibilă...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2163_-_Episodul_3&amp;diff=9264&amp;oldid=prev"/>
		<updated>2024-01-08T21:37:32Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț ==  Zoli joacă cu un labirint de dimensiune N x N, format din camere de dimensiune 1 x 1, inițial toate inaccesibile. Auzind că Zoli este mare informatician, Dănutz și D’Umbră au decis să îl pună la încercare, după cum urmează:  1 x y: Dănutz transformă camera inaccesibilă (x, y) într-una accesibilă. &amp;lt;br&amp;gt; 2 x1 y1 x2 y2: D’Umbră îl întreabă pe Zoli care este numărul minim de camere ce trebuie traversate pentru a ajunge din camera accesibilă...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț == &lt;br /&gt;
Zoli joacă cu un labirint de dimensiune N x N, format din camere de dimensiune 1 x 1, inițial toate inaccesibile. Auzind că Zoli este mare informatician, Dănutz și D’Umbră au decis să îl pună la încercare, după cum urmează:&lt;br /&gt;
&lt;br /&gt;
1 x y: Dănutz transformă camera inaccesibilă (x, y) într-una accesibilă.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 x1 y1 x2 y2: D’Umbră îl întreabă pe Zoli care este numărul minim de camere ce trebuie traversate pentru a ajunge din camera accesibilă (x1, y1) în camera accesibilă (x2, y2).&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Zoli a rezolvat deja această problemă, fiind una banală. El s-a dus să se joace LOL și este curios dacă o poți rezolva și tu. Pentru M evenimente de forma celor de mai sus, să se scrie un program care le procesează și afișează în fișierul de ieșire rezultatele operațiilor de tip 2, în ordinea în care acestea apar în fișierul de intrare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare episodul3in.txt conține pe prima linie numerele N și M, iar pe următoarele M linii cele M operații.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire episodul3out.txt va conține pe fiecare linie rezultatele operațiilor de tipul 2, în ordinea în care acestea apar în fișierul de intrare.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ N ≤ 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ M ≤ 250.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ x, y ≤ N&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*pentru operațiile de tipul 1: camera (x, y) va avea exact o cameră vecină pe linie sau coloană deja accesibilă la momentul transformării sale, excepție făcând camera care este transformată prima.&lt;br /&gt;
*InParser&lt;br /&gt;
*OutParser&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; episodul3in.txt&lt;br /&gt;
: 5 7&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 2&lt;br /&gt;
: 2 1 1 1 2&lt;br /&gt;
: 1 2 2&lt;br /&gt;
: 1 1 3&lt;br /&gt;
: 2 1 3 2 2&lt;br /&gt;
: 2 1 1 2 2&lt;br /&gt;
; episodul3out.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 3&lt;br /&gt;
: 3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; episodul3in.txt&lt;br /&gt;
: 4 6&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 2&lt;br /&gt;
: 1 1 3&lt;br /&gt;
: 2 1 1 3 3&lt;br /&gt;
: 1 2 2&lt;br /&gt;
: 2 1 2 2 2&lt;br /&gt;
; episodul3out.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 1&lt;br /&gt;
: 3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2163 - Episodul 3&lt;br /&gt;
from collections import deque&lt;br /&gt;
&lt;br /&gt;
def bfs(start, end, accessible):&lt;br /&gt;
    queue = deque([(start, 0)])&lt;br /&gt;
    visited = set()&lt;br /&gt;
&lt;br /&gt;
    while queue:&lt;br /&gt;
        current, steps = queue.popleft()&lt;br /&gt;
        x, y = current&lt;br /&gt;
&lt;br /&gt;
        if current == end:&lt;br /&gt;
            return steps&lt;br /&gt;
&lt;br /&gt;
        if current in visited:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        visited.add(current)&lt;br /&gt;
&lt;br /&gt;
        for neighbor in [(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)]:&lt;br /&gt;
            if 1 &amp;lt;= neighbor[0] &amp;lt;= N and 1 &amp;lt;= neighbor[1] &amp;lt;= N and neighbor in accessible:&lt;br /&gt;
                queue.append((neighbor, steps + 1))&lt;br /&gt;
&lt;br /&gt;
    return -1  # If no path is found&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citire date de intrare&lt;br /&gt;
try:&lt;br /&gt;
    with open(&amp;quot;episodul3in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        N, M = map(int, file.readline().split())&lt;br /&gt;
        accessible = set()&lt;br /&gt;
        result = []&lt;br /&gt;
&lt;br /&gt;
        for _ in range(M):&lt;br /&gt;
            operation = list(map(int, file.readline().split()))&lt;br /&gt;
&lt;br /&gt;
            if operation[0] == 1:&lt;br /&gt;
                accessible.add((operation[1], operation[2]))&lt;br /&gt;
            elif operation[0] == 2:&lt;br /&gt;
                if (operation[1], operation[2]) not in accessible or (operation[3], operation[4]) not in accessible:&lt;br /&gt;
                    result.append(&amp;quot;Fals&amp;quot;)&lt;br /&gt;
                else:&lt;br /&gt;
                    result.append(bfs((operation[1], operation[2]), (operation[3], operation[4]), accessible))&lt;br /&gt;
&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    result = [&amp;quot;Fals&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
# Scriere rezultat în fișier de ieșire&lt;br /&gt;
with open(&amp;quot;episodul3out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
    for r in result:&lt;br /&gt;
        file.write(str(r) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
</feed>