<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "Задача градинар"]]></title>
		<link>http://mendo.mk/jforum/posts/list/6.page</link>
		<description><![CDATA[Latest messages posted in the topic "Задача градинар"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Задача градинар</title>
				<description><![CDATA[ Ова ми е кодот не ми е јасно зошто не дава точна локација.<br /> За првито тест пример ми дава 4, 4 а треба 1, 3.<br /> Видов на 4, 4 (т.е 3, 3) наводнува 3 цвеќиња и на 1, 3 (т.е 0, 2) наводнува 3 цвеќиња. А направено ми е само ако најде нешто повеќе цвеќиња да смене локација бидејќи пишува ако има повеќе решенија да се испечати она најлево. Help  :?:  :?: <br /> <br /> [code]#include &lt;bits/stdc++.h&gt;<br /> using namespace std;<br /> <br /> int M, N, W;<br /> string G[1000][1000];<br /> int poseteno[1000][1000] = {0};<br /> <br /> <br /> bool valid_move(pair&lt;int, int&gt; next)<br /> {<br />     return (next.first &gt;= 0 && next.first &lt; M && next.second &gt;= 0 && next.second &lt; N && G[next.first][next.second][0] != '#');<br /> }<br /> <br /> vector&lt;pair&lt;int, int&gt; &gt; possible_moves(pair&lt;int, int&gt; next)<br /> {<br />     vector&lt;pair&lt;int, int&gt; &gt; moves;<br />     moves.push_back(make_pair(next.first, next.second+1));<br />     moves.push_back(make_pair(next.first, next.second-1));<br />     moves.push_back(make_pair(next.first+1, next.second));<br />     moves.push_back(make_pair(next.first-1, next.second));<br />     return moves;<br /> }<br /> <br /> int BFS(pair&lt;int, int&gt; sys)<br /> {<br />     int N = 0;<br />     memset(poseteno, 0, sizeof(poseteno));<br />     queue&lt;pair&lt;int, int&gt; &gt; red;<br />     queue&lt;int&gt; far;<br />     far.push(0);<br />     red.push(sys);<br />     while(!red.empty())<br />     {<br />         pair&lt;int, int&gt; node = red.front();<br />         int mom = far.front();<br />         red.pop();<br />         vector&lt;pair&lt;int, int&gt; &gt; moves = possible_moves(node);<br />         for(auto next : moves)<br />         {<br />             if(valid_move(next))<br />             {<br />                 if(poseteno[next.first][next.second] == 0)<br />                 {<br />                     poseteno[next.first][next.second] = 1;<br />                     red.push(next);<br />                     far.push(mom+1);<br />                     if(mom+1 &lt;= W)<br />                     {<br />                         if(G[next.first][next.second][0] == 'C') N++;<br />                     }<br />                     else<br />                     {<br />                         return N;<br />                     }<br />                 }<br />             }<br />         }<br />     }<br />     return N;<br /> }<br /> <br /> <br /> main()<br /> {<br />     cin &gt;&gt; M &gt;&gt; N;<br />     cin &gt;&gt; W;<br /> <br />     string GR[M];<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         cin &gt;&gt; GR[i];<br />     }<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         for(int j = 0; j &lt; N; j++)<br />         {<br />             G[i][j] = GR[i][j];<br />         }<br />     }<br />     int L = 0, P, I, J;<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         for(int j = 0; j &lt; N; j++)<br />         {<br />             if(G[i][j][0] == '.')<br />             {<br />                 P = BFS(make_pair(i, j));<br />                 if(P &gt; L)<br />                 {<br />                     I = i;<br />                     J = j;<br />                 }<br />             }<br />         }<br />     }<br />     cout &lt;&lt; I+1 &lt;&lt; " " &lt;&lt; J+1;<br />     return 0;<br /> }<br /> [/code]]]></description>
				<guid isPermaLink="true">http://mendo.mk/jforum/posts/preList/555/3391.page</guid>
				<link>http://mendo.mk/jforum/posts/preList/555/3391.page</link>
				<pubDate><![CDATA[Fri, 23 Mar 2018 13:42:06]]> GMT</pubDate>
				<author><![CDATA[ ThePopivanov]]></author>
			</item>
			<item>
				<title>Re:Задача градинар</title>
				<description><![CDATA[ Средив имав некои мали грешки но ми надминува временски лимит :/<br /> <br /> [code]#include &lt;bits/stdc++.h&gt;<br /> using namespace std;<br /> <br /> int M, N, W;<br /> string G[1000][1000];<br /> int poseteno[1000][1000] = {0};<br /> <br /> <br /> bool valid_move(pair&lt;int, int&gt; next)<br /> {<br />     return (next.first &gt;= 0 && next.first &lt; M && next.second &gt;= 0 && next.second &lt; N && G[next.first][next.second][0] != '#');<br /> }<br /> <br /> vector&lt;pair&lt;int, int&gt; &gt; possible_moves(pair&lt;int, int&gt; next)<br /> {<br />     vector&lt;pair&lt;int, int&gt; &gt; moves;<br />     moves.push_back(make_pair(next.first, next.second+1));<br />     moves.push_back(make_pair(next.first, next.second-1));<br />     moves.push_back(make_pair(next.first+1, next.second));<br />     moves.push_back(make_pair(next.first-1, next.second));<br />     return moves;<br /> }<br /> <br /> int BFS(pair&lt;int, int&gt; sys)<br /> {<br />     int N = 0;<br />     memset(poseteno, 0, sizeof(poseteno));<br />     queue&lt;pair&lt;int, int&gt; &gt; red;<br />     queue&lt;int&gt; far;<br />     far.push(0);<br />     red.push(sys);<br />     while(!red.empty())<br />     {<br />         pair&lt;int, int&gt; node = red.front();<br />         int mom = far.front();<br />         red.pop();<br />         far.pop();<br />         vector&lt;pair&lt;int, int&gt; &gt; moves = possible_moves(node);<br />         for(auto next : moves)<br />         {<br />             if(valid_move(next))<br />             {<br />                 if(poseteno[next.first][next.second] == 0)<br />                 {<br />                     poseteno[next.first][next.second] = 1;<br />                     red.push(next);<br />                     far.push(mom+1);<br />                     if(mom+1 &lt;= W)<br />                     {<br />                         if(G[next.first][next.second][0] == 'C') N++;<br />                     }<br />                     else<br />                     {<br />                         return N;<br />                     }<br />                 }<br />             }<br />         }<br />     }<br />     return N;<br /> }<br /> <br /> <br /> main()<br /> {<br />     cin &gt;&gt; M &gt;&gt; N;<br />     cin &gt;&gt; W;<br /> <br />     string GR[M];<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         cin &gt;&gt; GR[i];<br />     }<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         for(int j = 0; j &lt; N; j++)<br />         {<br />             G[i][j] = GR[i][j];<br />         }<br />     }<br />     int L = 0, P, I, J;<br />     for(int i = 0; i &lt; M; i++)<br />     {<br />         for(int j = 0; j &lt; N; j++)<br />         {<br />             if(G[i][j][0] == '.')<br />             {<br />                 P = BFS(make_pair(i, j));<br />                 if(P &gt; L)<br />                 {<br />                     L = P;<br />                     I = i;<br />                     J = j;<br />                 }<br />             }<br />         }<br />     }<br />     cout &lt;&lt; I+1 &lt;&lt; " " &lt;&lt; J+1;<br />     return 0;<br /> }<br /> [/code]]]></description>
				<guid isPermaLink="true">http://mendo.mk/jforum/posts/preList/555/3392.page</guid>
				<link>http://mendo.mk/jforum/posts/preList/555/3392.page</link>
				<pubDate><![CDATA[Fri, 23 Mar 2018 13:56:41]]> GMT</pubDate>
				<author><![CDATA[ ThePopivanov]]></author>
			</item>
			<item>
				<title>Re:Задача градинар</title>
				<description><![CDATA[ [quote=ThePopivanov]Средив имав некои мали грешки но ми надминува временски лимит :/[/quote]<br /> Многу BFS-а се тоа.<br /> Ако ја прочиташ задачата уште еднаш, ќе видиш дека K &lt;= 100, и всушност можеш да почнеш со BFS од тие позиции. Тоа е многу помал број од M*N.]]></description>
				<guid isPermaLink="true">http://mendo.mk/jforum/posts/preList/555/3393.page</guid>
				<link>http://mendo.mk/jforum/posts/preList/555/3393.page</link>
				<pubDate><![CDATA[Fri, 23 Mar 2018 17:55:13]]> GMT</pubDate>
				<author><![CDATA[ MOI]]></author>
			</item>
			<item>
				<title>Re:Задача градинар</title>
				<description><![CDATA[ [quote=MOI][quote=ThePopivanov]Средив имав некои мали грешки но ми надминува временски лимит :/[/quote]<br /> Многу BFS-а се тоа.<br /> Ако ја прочиташ задачата уште еднаш, ќе видиш дека K &lt;= 100, и всушност можеш да почнеш со BFS од тие позиции. Тоа е многу помал број од M*N.[/quote]<br /> <br /> Ја пишував од ново со BFS од цвеќињата ама па нејќе неможам да си ја најдам грешката :/<br /> <br /> [code]#include &lt;bits/stdc++.h&gt;<br /> using namespace std;<br /> int N, M, W, BC = 0;<br /> string G[1000][1000];<br /> int poseteno[1000][1000] = {0};<br /> int matrix[1000][1000] = {0};<br /> queue&lt;pair&lt;int, int&gt; &gt; red;<br /> queue&lt;int&gt; far;<br /> <br /> bool valid_move(pair&lt;int, int&gt; next)<br /> {<br />     return (next.first &gt;= 0 && next.first &lt; N && next.second &gt;= 0 && next.second &lt; M && G[next.first][next.second][0] != '#' && G[next.first][next.second][0] != 'C');<br /> }<br /> <br /> vector&lt;pair&lt;int, int&gt; &gt;possible_moves(pair&lt;int, int&gt; node)<br /> {<br />     vector&lt;pair&lt;int, int&gt; &gt; moves;<br />     moves.push_back(make_pair(node.first, node.second+1));<br />     moves.push_back(make_pair(node.first, node.second-1));<br />     moves.push_back(make_pair(node.first+1, node.second));<br />     moves.push_back(make_pair(node.first-1, node.second));<br />     return moves;<br /> }<br /> <br /> void BFS()<br /> {<br />     while(!red.empty())<br />     {<br />         int mom = far.front();<br />         far.pop();<br />         pair&lt;int, int&gt; node = red.front();<br />         red.pop();<br />         vector&lt;pair&lt;int, int&gt; &gt; moves = possible_moves(node);<br />         for(pair&lt;int, int&gt; next : moves)<br />         {<br />             if(valid_move(next))<br />             {<br />                 if(mom+1 &gt;= W) break;<br />                 if(poseteno[next.first][next.second] == 0)<br />                 {<br />                     poseteno[next.first][next.second] = poseteno[next.first][next.second]+1;<br />                     red.push(next);<br />                     far.push(mom+1);<br />                 }<br />                 matrix[next.first][next.second] = matrix[node.first][node.second]+1;<br />             }<br />         }<br />     }<br /> }<br /> <br /> main()<br /> {<br />     cin &gt;&gt; N &gt;&gt; M;<br />     cin &gt;&gt; W;<br />     string GR[N];<br />     for(int i = 0; i &lt; N; i++) cin &gt;&gt; GR[i];<br />     for(int i = 0; i &lt; N; i++)<br />     {<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             G[i][j] = GR[i][j];<br />             if(G[i][j][0] == 'C')<br />             {<br />                 red.push(make_pair(i, j));<br />                 far.push(0);<br />                 BC++;<br />             }<br />         }<br />     }<br />     BFS();<br />     int NG = 0;<br />     for(int i = 0; i &lt; N; i++)<br />     {<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             NG = max(NG, matrix[i][j]);<br />         }<br />     }<br />     for(int i = 0; i &lt; N; i++)<br />     {<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             if(matrix[i][j] == NG)<br />             {<br />                 cout &lt;&lt; i+1 &lt;&lt; " " &lt;&lt; j+1;<br />                 return 0;<br />             }<br />         }<br />     }<br />     return 0;<br /> }<br /> [/code]]]></description>
				<guid isPermaLink="true">http://mendo.mk/jforum/posts/preList/555/3395.page</guid>
				<link>http://mendo.mk/jforum/posts/preList/555/3395.page</link>
				<pubDate><![CDATA[Fri, 23 Mar 2018 18:39:02]]> GMT</pubDate>
				<author><![CDATA[ ThePopivanov]]></author>
			</item>
			<item>
				<title>Re:Задача градинар</title>
				<description><![CDATA[ [quote=ThePopivanov]Ја пишував од ново со BFS од цвеќињата ама па нејќе неможам да си ја најдам грешката :/[/quote]<br /> Еве поправки. Ако добро сфатив што сакаш да искуцаш, мислам дека не може да ги ставиш така во ред сите на почеток, бидејќи потоа незнаеш со poseteno[][] дали да продолжиш или не (бидејќи секое цвеќе е посебно).<br /> [code]#include &lt;bits/stdc++.h&gt;<br /> using namespace std;<br /> int N, M, W, BC = 0;<br /> string G[1000][1000];<br /> int poseteno[1000][1000] = {0};<br /> int matrix[1000][1000] = {0};<br /> queue&lt;pair&lt;int, int&gt; &gt; red;<br /> queue&lt;int&gt; far;<br /> <br /> bool valid_move(pair&lt;int, int&gt; next)<br /> {<br />     return (next.first &gt;= 0 && next.first &lt; N && next.second &gt;= 0 && next.second &lt; M && G[next.first][next.second][0] != '#');<br /> }<br /> <br /> vector&lt;pair&lt;int, int&gt; &gt;possible_moves(pair&lt;int, int&gt; node)<br /> {<br />     vector&lt;pair&lt;int, int&gt; &gt; moves;<br />     moves.push_back(make_pair(node.first, node.second+1));<br />     moves.push_back(make_pair(node.first, node.second-1));<br />     moves.push_back(make_pair(node.first+1, node.second));<br />     moves.push_back(make_pair(node.first-1, node.second));<br />     return moves;<br /> }<br /> <br /> void BFS()<br /> {<br />     memset(poseteno, 0, sizeof(poseteno));<br /> <br />     while(!red.empty())<br />     {<br />         int mom = far.front();<br />         far.pop();<br />         pair&lt;int, int&gt; node = red.front();<br />         red.pop();<br />         vector&lt;pair&lt;int, int&gt; &gt; moves = possible_moves(node);<br />         for(pair&lt;int, int&gt; next : moves)<br />         {<br />             if(valid_move(next))<br />             {<br />                 if(mom+1 &gt; W) break;<br />                 if(poseteno[next.first][next.second] == 0)<br />                 {<br />                     poseteno[next.first][next.second] = poseteno[next.first][next.second]+1;<br />                     red.push(next);<br />                     far.push(mom+1);<br /> <br />                     matrix[next.first][next.second] = matrix[next.first][next.second]+1;<br />                 }<br />             }<br />         }<br />     }<br /> }<br /> <br /> int main()<br /> {<br />     cin &gt;&gt; N &gt;&gt; M;<br />     cin &gt;&gt; W;<br />     string GR[N];<br />     for(int i = 0; i &lt; N; i++) cin &gt;&gt; GR[i];<br /> <br />     for(int i = 0; i &lt; N; i++)<br />         for (int j = 0; j &lt; M; j++)<br />             G[i][j] = GR[i][j];<br /> <br />     for(int i = 0; i &lt; N; i++)<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             if(G[i][j][0] == 'C')<br />             {<br />                 red.push(make_pair(i, j));<br />                 far.push(0);<br />                 BC++;<br /> <br />                 BFS();<br />             }<br />         }<br /> <br />     int NG = 0;<br />     for(int i = 0; i &lt; N; i++)<br />     {<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             NG = max(NG, matrix[i][j]);<br />         }<br />     }<br />     for(int i = 0; i &lt; N; i++)<br />     {<br />         for(int j = 0; j &lt; M; j++)<br />         {<br />             if(matrix[i][j] == NG)<br />             {<br />                 cout &lt;&lt; i+1 &lt;&lt; " " &lt;&lt; j+1;<br />                 return 0;<br />             }<br />         }<br />     }<br />     return 0;<br /> }[/code]]]></description>
				<guid isPermaLink="true">http://mendo.mk/jforum/posts/preList/555/3396.page</guid>
				<link>http://mendo.mk/jforum/posts/preList/555/3396.page</link>
				<pubDate><![CDATA[Fri, 23 Mar 2018 19:26:44]]> GMT</pubDate>
				<author><![CDATA[ MOI]]></author>
			</item>
	</channel>
</rss>