<?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=3235_-_Entries</id>
	<title>3235 - Entries - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3235_-_Entries"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3235_-_Entries&amp;action=history"/>
	<updated>2026-05-01T06:37:14Z</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=3235_-_Entries&amp;diff=9130&amp;oldid=prev</id>
		<title>Rus Marius: /* Date de ieșire */</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3235_-_Entries&amp;diff=9130&amp;oldid=prev"/>
		<updated>2024-01-06T19:18:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Date de ieșire&lt;/span&gt;&lt;/span&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 19:18, 6 January 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-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&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;br&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;br&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;= Date de ieșire =&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;= Date de ieșire =&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;Fișierul de ieșire &amp;lt;code&amp;gt;entriesOUT.txt&amp;lt;/code&amp;gt; va conține răspunsurile la întrebări, câte un răspuns pe o linie, în ordinea din fișierul de intrare. Răspunsul va fi numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dacă nodurile despre care ați fost întrebat sunt în acel moment în aceeași componentă conexă, respectiv numărul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; în caz contrar.&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;Fișierul de ieșire &amp;lt;code&amp;gt;entriesOUT.txt&amp;lt;/code&amp;gt; va conține răspunsurile la întrebări, câte un răspuns pe o linie, în ordinea din fișierul de intrare. Răspunsul va fi numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dacă nodurile despre care ați fost întrebat sunt în acel moment în aceeași componentă conexă, respectiv numărul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; în caz contrar&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul &quot;Nu corespunde restricțiilor impuse&quot;&lt;/ins&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;br&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;br&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;= Restricții și precizări =&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;= Restricții și precizări =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rus Marius</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3235_-_Entries&amp;diff=9129&amp;oldid=prev</id>
		<title>Rus Marius: Pagină nouă: == Enunț == Se consideră un graf care inițial este format din &lt;code&gt;P&lt;/code&gt; noduri izolate, etichetate de la &lt;code&gt;1&lt;/code&gt; la &lt;code&gt;P&lt;/code&gt;. Se mai consideră &lt;code&gt;N&lt;/code&gt; intrări, unde intrare poate însemna:  * comandă – o comandă are forma &lt;code&gt;I + J&lt;/code&gt;, cu semnificația că în graf se adaugă muchia care unește nodurile &lt;code&gt;I&lt;/code&gt; și &lt;code&gt;J&lt;/code&gt; (dacă &lt;code&gt;I&lt;/code&gt; și &lt;code&gt;J&lt;/code&gt; erau deja unite în acel moment, nu se întreprinde nici o...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3235_-_Entries&amp;diff=9129&amp;oldid=prev"/>
		<updated>2024-01-06T19:17:55Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Se consideră un graf care inițial este format din &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; noduri izolate, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;. Se mai consideră &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; intrări, unde intrare poate însemna:  * comandă – o comandă are forma &amp;lt;code&amp;gt;I + J&amp;lt;/code&amp;gt;, cu semnificația că în graf se adaugă muchia care unește nodurile &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; (dacă &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; erau deja unite în acel moment, nu se întreprinde nici o...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră un graf care inițial este format din &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; noduri izolate, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;. Se mai consideră &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; intrări, unde intrare poate însemna:&lt;br /&gt;
&lt;br /&gt;
* comandă – o comandă are forma &amp;lt;code&amp;gt;I + J&amp;lt;/code&amp;gt;, cu semnificația că în graf se adaugă muchia care unește nodurile &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; (dacă &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; erau deja unite în acel moment, nu se întreprinde nici o acțiune);&lt;br /&gt;
* întrebare – o întrebare este de forma &amp;lt;code&amp;gt;I ? J&amp;lt;/code&amp;gt;, adică se întreabă dacă în acel moment &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; sunt în aceeași componentă conexă.&lt;br /&gt;
&lt;br /&gt;
Se pleacă deci de la un graf inițial format din noduri izolate, care pe parcurs se “unifică”. Tot pe parcurs sunteți întrebat dacă anumite perechi de noduri sunt sau nu în aceeași componentă conexă.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieți un program care să răspundă la întrebările din fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Din fișierul &amp;lt;code&amp;gt;entriesIN.txt&amp;lt;/code&amp;gt; veți citi de pe prima linie numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; de intrări. Pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se găsesc intrările, câte una pe linie. O intrare este codificată prin trei numere separate prin câte un blanc. Primele două numere reprezintă nodurile &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt; (numere întregi, cuprinse între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;), iar al treilea este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dacă intrarea este o comandă, respectiv &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; dacă intrarea este o întrebare.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;entriesOUT.txt&amp;lt;/code&amp;gt; va conține răspunsurile la întrebări, câte un răspuns pe o linie, în ordinea din fișierul de intrare. Răspunsul va fi numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dacă nodurile despre care ați fost întrebat sunt în acel moment în aceeași componentă conexă, respectiv numărul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 5 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ P ≤ 10.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1: =&lt;br /&gt;
&amp;lt;code&amp;gt;entriesIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 9&lt;br /&gt;
 1 2 2 &lt;br /&gt;
 1 2 1&lt;br /&gt;
 3 7 2&lt;br /&gt;
 2 3 1&lt;br /&gt;
 1 3 2&lt;br /&gt;
 2 4 2&lt;br /&gt;
 1 4 1&lt;br /&gt;
 3 4 2&lt;br /&gt;
 1 7 2&lt;br /&gt;
&amp;lt;code&amp;gt;entriesOUT.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
 0&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2: =&lt;br /&gt;
&amp;lt;code&amp;gt;entriesIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 5001&lt;br /&gt;
 1 2 2 &lt;br /&gt;
 1 2 1&lt;br /&gt;
 3 7 2&lt;br /&gt;
 2 3 1&lt;br /&gt;
 1 3 2&lt;br /&gt;
 2 4 2&lt;br /&gt;
 1 4 1&lt;br /&gt;
 3 4 2&lt;br /&gt;
 1 7 2&lt;br /&gt;
&amp;lt;code&amp;gt;entriesOUT.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 Datele nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictiile(n, p):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 5000):&lt;br /&gt;
        raise ValueError(&amp;quot;&amp;quot;)&lt;br /&gt;
    if not (1 &amp;lt;= p &amp;lt;= 10000000):&lt;br /&gt;
        raise ValueError(&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;entriesIN.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;entriesOUT.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    M = {}&lt;br /&gt;
    t = [0] * 10005&lt;br /&gt;
    n = 0&lt;br /&gt;
&lt;br /&gt;
    def find(x):&lt;br /&gt;
        z, y = x, x&lt;br /&gt;
        while t[x] != 0:&lt;br /&gt;
            x = t[x]&lt;br /&gt;
&lt;br /&gt;
        while t[y] != 0:&lt;br /&gt;
            z = t[y]&lt;br /&gt;
            t[y] = x&lt;br /&gt;
            y = z&lt;br /&gt;
&lt;br /&gt;
        return x&lt;br /&gt;
&lt;br /&gt;
    def union(x, y):&lt;br /&gt;
        t[y] = x&lt;br /&gt;
&lt;br /&gt;
    T = int(fin.readline().strip())&lt;br /&gt;
    try:&lt;br /&gt;
        verifica_restrictiile(T, T)  # Check restrictions for n (number of test cases)&lt;br /&gt;
    except ValueError as e:&lt;br /&gt;
        fout.write(f&amp;quot;Datele nu corespund restrictiilor impuse {str(e)}&amp;quot;)&lt;br /&gt;
        fin.close()&lt;br /&gt;
        fout.close()&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    for _ in range(T):&lt;br /&gt;
        x, y, op = map(int, fin.readline().strip().split())&lt;br /&gt;
        k = 0&lt;br /&gt;
        if x not in M:&lt;br /&gt;
            k = 1&lt;br /&gt;
            n += 1&lt;br /&gt;
            M[x] = n&lt;br /&gt;
        if y not in M:&lt;br /&gt;
            k = 1&lt;br /&gt;
            n += 1&lt;br /&gt;
            M[y] = n&lt;br /&gt;
&lt;br /&gt;
        x = M[x]&lt;br /&gt;
        y = M[y]&lt;br /&gt;
        x = find(x)&lt;br /&gt;
        y = find(y)&lt;br /&gt;
&lt;br /&gt;
        if op == 1:&lt;br /&gt;
            if x != y:&lt;br /&gt;
                union(x, y)&lt;br /&gt;
        else:&lt;br /&gt;
            if k == 1:&lt;br /&gt;
                fout.write(&amp;quot;0\n&amp;quot;)&lt;br /&gt;
            elif x == y:&lt;br /&gt;
                fout.write(&amp;quot;1\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                fout.write(&amp;quot;0\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rus Marius</name></author>
	</entry>
</feed>