ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2015-05-30 02:03:50 -0500
  • مشاهده شده: 479 بار
  • بروز شده: 2015-05-31 05:40:28 -0500

پرسش‌های مشابه:

پیدا کرن جدولی برای قلی در بازی مرگ و زندگی

روشن کردن لامپ ها با 2 کلید همزمان زدن

جعبه های مهره و آقوی همساده !-مسئله F ای سی ام دانشگاه فردوسی

شمردن تعداد نا به جایی ها در یک آرایه - کدینگ

پوش محدب - کدینگ -سوال سخت -الگوریتمی (Convex Hull)

سوال کدینگ - مسئله 104 sgu -سوال سخت

سوال کدینگ - dp - فارسی - سوال سخت

سوال کدینگ تقریبا فنننننی !!!!

آیا میتوان با جمع m عدد اول عدد n را ساخت؟

شیمی در کامپیوتر یا کامپبوتر در شیمی !- سوال کدینگ

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

عوض کردن جای قلی و ممد در گراف بدون دیدن یکدیگر

6

سلام $$time=3 second$$ $$memory=256megabytes$$

یک گراف $n$ راسی داریم که که ممد توی راس $u$ و قلی توی راس $v$ قرار دارد حالا ما میخوایم جای ممد و قلی رو عوض کنیم ولی چون ممد و قلی با هم دشمنی درازی دارند نمی خوان همو ملاقات کنند حالا شما بگید آیا می شه جا هاشون رو عوض کرد؟

  • ممد و قلی فقز در محل رئوس میتوانند همیدیگر را ملااقات کنند و نه در یال ها مثا اگر در یه یال یک سرش ممد و یکی سرش قلی بود می توانند از این یال عبور کنند به طوری که همدیگر رو ملاقات نکنند.
  • در هر گام ممدو قلی باید به یه همساده خونه ای که الان هستند برند.

ورودی :

ابندا $n , m$ $(n<5e2,m<1e4)$ وکه $n$ تعداد رئوس و $m$ تعداد یال هاست . سپس در $m$ خط بعدی دو راس$X_{i},Y_{i}$ می آید یعنی بین آن دو یال است . سپس $u , v$ داده مس شود .

خروجی :

چاپ $No$ در صورتی که امکان ندارد و $Yes$ در صورتی که امکان دارد .

(ممنون از @احسان که این نکته رو گفت )

مرحله_سوم کدینگ بی_اف_اس bfs
2015-05-30 02:03:50 -0500
چشمک 2291 ● 29 ● 67 ● 119
پاک‌کردن   ویرایش سوال
نظرات

خب یه سوالی پیش میاد اینجا :) اونم این که اگه بخوان از یک یال عبور کنن ممکنه؟ یعنی مثلن روی دوسر یال u,v قرار دارن و بخوان از یال u,v عبور کنین جفتشون آیا این ممکنه؟(توی یک یال می‌تونن هم‌دیگه رو ببینن؟)

2015-05-30 03:41:49 -0500 احسان

dada soale 29E hast in ke tedade ras va yala kamtare ba O(n^3) mishe n^2 nadare oskol shodi dobare :))

2015-05-30 04:28:03 -0500 آرش خن

Oh faghat yes va no? pas nemiad chap konim aha rasti sry oskol nashodi shayad nm dashte bashe

2015-05-30 04:31:26 -0500 آرش خن

من n^2 دارم فک کنم :)

2015-05-30 04:52:35 -0500 احسان

بگو خب!!!!

2015-05-30 04:53:16 -0500 ناسحا

2 پاسخ

3

کد

ایده‌ی اصلی اینه که یه گراف جدید بسازین و هر راس رو یه جفت راس (v,u) توی گراف اصلی قرار بدین. دو تا راس مثل‌‌ ‌‌ ‌ ‌ ‌ ‌ ‌ (v,u) , (x,y) رو به هم وصل کنید اگر و تنها اگر وقتی که نفر اول در راس v قرار داره و نفر دوم در راس u می‌تونن در حرکت بعدی به ترتیب در x و y باشند. خب حالا اگه از راس (v,u) تو گراف dfs بزنیم می‌تونیم بفهمیم که آیا می‌شه از (v,u) به (u,v) رفت یا نه که این همون جواب ماست.

ولی یه مشکلی هست اونم اینه که این گرافی که ما می‌سازیم تعداد یال‌های زیادی داره(فک کنم از اردر n^4) که خیلی بده برای dfs پس اینجاس که یه ایده‌ی خیلی قشنگ می‌زنیم تا تعداد یال‌های گراف رو کم کنیم. اون ایده اینه:

فک کنید که توی هر حرکت اول نفر اول حرکت می‌کنه بعد نفر دوم. پس اگه بتونیم به حالتی که نفر اول توی u و نفر دوم توی v هست و الان نوبت نفر اول هست برسیم جواب yes هست و در غیر این صورت جواب no می‌شه. اگه به جای اینکه راس‌های گراف رو دوتایی‌های مرتب درنظر بگیریم سه‌تایی مرتب در نظر بگیریم به این صورت که (v,u,s) یعنی اینکه نفر اول توی راس v و نفر دوم توی u هست و الان نوبت نفر sـام هست تعداد یال‌های گرافمون از اردر n^۳ می‌شه. چون از هر راس (v,u,s) حداکثر به ‌ ‌ ‌ n-1 راس دیگه یال داریم پس تعداد کل یال‌ها از اردر n^3 بیشتر است که خب با وضعیت سوال خیلی خوبه.(یه چیزی حدود 8^10 می‌شه که معمولن جاج‌های آنلاین به قدری قوی هستن که بتونن در کمتر از یه ثانیه کار رو انجام بدن) (در ضمن این سوال تایمش فک کنم ۳ ثانیه باشه)

گراف جدید همه‌ی خاصیت های مورد نیاز ما رو داره و می‌تونیم ازش یه dfs بزنیم و جواب سوال رو به دست بیاریم

پ.ن

اگه سوال این بود که کمترین زمان مورد نیاز برای چنین عملی رو بدین می‌شه با استفاده از bfs روی گرافی که می‌سازیم کوتاه‌ترین فاصله بین رئوس (v,u,1) و (u,v,1) رو پیدا کنیم و نصفش رو به عنوان جواب برگردونیم. :)

(در حالت معمولی هم اگر به جای dfs از bfs استفاده کنیم ضریب کمتری می‌خوره و تایم نخواهد شد ولی همین راه هم مشکلی نداره)

اگه مشکلی توی فهم راه حل بود در نظرات بگید :)

پ.ن

کد به دلیل یه باگ کوچیک عوض شد.

2015-05-30 06:39:46 -0500
احسان 769 ● 7 ● 12 ● 30
پاک‌کردن   ویرایش پاسخ
نظرات

Taghriban doroste vali moshkele aslish ine ke in 2 ta baham harekat mikonan pas age s barabare 2 bashe age to ye ras bian eshkali nadare dge dare?

2015-05-30 08:58:56 -0500 آرش خن

o(mn) هست دقیقش :)

2015-05-30 08:59:48 -0500 حمیدرضاه

اینم کد قدیمیه من تو سی اف:http://codeforces.com/contest/29/submission/10225622

2015-05-30 09:00:58 -0500 حمیدرضاه

اگه کثیفه دلیلش قدیمی بودنشه :)

2015-05-30 09:01:36 -0500 حمیدرضاه

@آرش خان قبول دارم که یه باگ کوچیک داره :)

2015-05-30 10:14:23 -0500 احسان
2

سلام

پرواضح : هرجای مسئله که ما بتونیم جای این دو نفر رو عوض کنیم حله دیگه چون هرطوری که تاالان اومده بودن به این موقعیت به هم دیگه بگن که حالا هرکدوم جای اونیکی برگرده :)

حالا ادعا میکنم اگه گرف دور داشته باشه حله !!

اول اینکه میتونن همزمان توی دور باشن ! فرض کنید هر دو همزمان به سمت دور خاصی راه بیافتند اونیکه اول رسید چون طول دور حداقل سه هستش بره روی اون یالی که نفر دیگه نمیخواد رو راساش قرار بگیره !(رفتن رو یال یعنی رو دو سرش هی بره اینور هی بره اونور )

پس الان هردو همزمان رویه یه دورن !

حالا اگه از یه طرف دور تعداد راسهای بین زوج باشه اون دو نفر راحت جاشونو عوض میکنن ! چون همدیگر رو نخواهند دید(دیدن رو راس انجام میگیرد نه رو یال)

حالا اگه از دو طرف فرد باشه هر دو پاد ساعتگرد حرکت کنند اولین نفری که رسید به راس اونیکی اونجا رو یالش بره و تا اونیکی برسه به راس این یارو (چون از هر دو طرف فرده زمانی هست که این دو نفر جاشون عوض میشه ) پس کلا حله !

تو درختم اگه طول مسیر بینشون زوج باشه که حله ! و اگرنه درخت نباید هزار پا باشه (به طوریه که مسیر بین u,v جزو ستون فقرات باشه )!!( یه ذره واضحهو اگه دوست داشتین اینجاشم میگم )

اگه باگ زدم بگید ! :)

2015-05-30 07:13:15 -0500
طوفان 1480 ● 11 ● 21 ● 43
پاک‌کردن   ویرایش پاسخ
نظرات

قبول داری زدن کدش بدبختیه !!!!!

2015-05-30 08:50:40 -0500 حمیدرضاه

حمیدرضا پس به نطرت درسته !؟

کد چی بدبختیه سوال فقط yes , no میخواد

2015-05-30 08:54:18 -0500 طوفان

dada derakhte papiono farz kon(ye mosalas ke ye rasesh do ta yal ezafi be 2 rase ba darajeye 1 dare)

2015-05-30 08:55:06 -0500 آرش خن

الان یعنی گراف 5 راسی و 5 یالی ؟!

2015-05-30 08:56:37 -0500 طوفان

are papion kar mikone? age u va v 2 ta rase daraje 1 bashan

2015-05-30 08:57:08 -0500 آرش خن

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.