Challenger

المپیاد کامپیوتر , الگوریتم , برنامه نویسی , ترکیبیات , گراف , ....

Challenger

المپیاد کامپیوتر , الگوریتم , برنامه نویسی , ترکیبیات , گراف , ....

Challenger
طبقه بندی موضوعی
پیوندهای روزانه

پاسخ - SGU 103

چهارشنبه, ۱۳ دی ۱۳۹۱، ۱۱:۰۷ ق.ظ

متن اصلی سوال: http://acm.sgu.ru/problem.php?contest=0&problem=103

ترجمه :

در شهر دینگیلی ، ترافیک به طور نامعمولی کنترل می شود . در این شهر تعدادی ایستگاه و تعدادی جاده که ایستگاه ها را به هم متصل کردند داریم . بین هر دو ایستگاه حد اکثر یک جاده وجود دارد و هیچ جاده ای ایستگاهی را به خودش متصل نمی کند . در هر ایستگاه یک چراغ وجود دارد که یا رنگ آن در هر لحظه آبی یا قرمز است . رنگ هر چراغ به صورت دوره ای همواره در حال عوض شدن است ، و برای مدت مشخصی آبی و بعد برای مدت مشخصی قرمز است و دوباره آبی ... .  فقط در صورتی می توانیم از یک جاده عبور کنیم که در لحظه ای که می خواهیم حرکت را شروع کنیم رنگ چراغ ایستگاه های دو سر جاده یکسان باشد . اگر یک وسیله ی نقلیه درست در لحظه ای که رنگ چراغ ایستگاه تغییر می کند به یک ایستگاه برسد ، باید رنگ جدید چراغ را در نظر بگیریم . وسیله های نقلیه اجازه دارند در ایستگاه ها توقف کنند . به شما نقشه ی شهر داده شده :

  • مدت زمانی که طول می کشد تا از هر جاده عبور کنیم
  • مدت زمان هر دو رنگ برای چراغ هر ایستگاه
  • رنگ اولیه و زمان باقی مانده برای تغییر این رنگ در هر ایستگاه

شما باید کوتاه ترین مسیر بین دو ایستگاه داده شده در ورودی را پیدا کنید . اگر بیش از یک جواب وجود داشت می توانید یکی را به دلخواه در خروجی چاپ کنید .

 

ورودی :

خط اول ورودی شامل شماره ی ایستگاه اولیه و ایستگاه مقصد است .

خط دوم ورودی شامل دو عدد N و M است (به ترتیب : تعداد ایستگاه ها ، تعداد جاده ها)

در N خط بعدی اطلاعات ایستگاه ها به ترتیب شماره آمده است . در خط i+2 ام Ci, riC, tiB, tiP  آمده اند .  Ci نشان دهنده ی رنگ اولیه چراغ ایستگاه است که B (برای رنگ آبی ) یا P (برای رنگ قرمز) است . riC زمان باقی مانده از دوره ی رنگ فعلی چراغ ایستگاه است و tiB, tiP به ترتیب مدت زمان دوره ی رنگ قرمز و رنگ آبی اند .

در M خط بعدی اطلاعات جاده ها آمده . هر خط شامل سه عدد i, j, lij که نشان دهنده ی وجود  یک جاده بین دو شهر i و j است که عبور کردن از آن به انداره ی lij زمان می برد .

 

خروجی :

اگر مسیری بین دو شهر داده شده وجود داشت :

در خط اول خروجی زمان طی کردن کوتاه ترین مسیر را چاپ کنید و در خط بعدی  لیست ایستگاه هایی که در کوتاه ترین مسیر طی می شوند را چاپ کنید (به ترتیب ظاهر شدن در مسیر )

اگر مسیری بین دو شهر وجود نداشت در خروجی عدد 0 را چاپ کنید .


راهنمایی :

از الگوریتم دایکسترا استفاده کنید .

کد ++C

نظرات  (۱۲)

۱۴ دی ۹۱ ، ۱۶:۲۶ ابوالفضل اسدی
با اینکه کد من خیلی مزخرفه
ولی اینم کد من
http://paste.ubuntu.com/1491773/
۱۴ دی ۹۱ ، ۱۷:۱۱ غلام سیا
سلام
ببخشید من کد این سوالو زدم اما مموری لیمیت میشه
در حالی که با کد شما چک کردم نباید از لحاظ حافظه فرق داشته باشن
میشه کمک کنین؟
http://paste.ubuntu.com/1491876/

پاسخ:
سلام
خیلی از متغیر هایی رو که نیاز نبوده long long تعریف کنی long long تعریف کردی .
تقریبا یه ضریب 2 به کل مموری اضافه می کنه .
متغیر هایی که نیاز نیست long long تعریف کنی رو int تعریف کن . درست میشه .
:)
۱۴ دی ۹۱ ، ۱۷:۴۰ غلام سیا
اولش همه int بود بعد mle میشد خواستم به شما نشون بدم replace کردم

پاسخ:
اگر متغیر ها int باشه ، کد از نظر مموری به نظر من مشکلی نداره . اصلا نیازی هم به long long نیست .

۱۴ دی ۹۱ ، ۱۷:۵۱ غلام سیا
پس چرا سابمیت میکنم تو تست دو مموری میشه :(
:-؟
پاسخ:
صبور باشید...
۱۴ دی ۹۱ ، ۱۷:۵۴ غلام سیا
خیلی دیکتاتوری!!!
3 تا نظر پاک کردی ازم!
فاتحه ی خودتو خوندی. صب کن بیبین چی کارت موکونوم!
پاسخ:
من سعی می کنم تا حد ممکن فضای وبلاگ رسمی باشه :D
هدف همینه ، فقط :)
۱۴ دی ۹۱ ، ۱۷:۵۵ غلام سیا
مو رو شیناختی ؟
پاسخ:
نه نشناختم  آقای علیرضا امانی ! :))
جدا نمی فهمم چرا درست نمیشه :D
۱۴ دی ۹۱ ، ۱۷:۵۷ غلام سیا
نیمی دونستوم میخواید رسمی مسمی باشین. خیجیل شدیم
اصن دیه نظر نومیدیم
پاسخ:
بنیامین: لهجه ی جدید تهرانیه؟ :D
۱۴ دی ۹۱ ، ۱۸:۰۱ غلام سیا
اگه درس نیمیشه بی خی
علف باید به دهن بزی شیرین بیاد
من که از خودم راضیم 
B-)
۱۴ دی ۹۱ ، ۲۰:۵۳ غلام سیا
حالا هم ضایع شدم
هم اشکال کدمو نفهمیدم
هم لقبم لو رفت
هم ابروم دود شد
:'(
in code ro tabestoone parsal zadam dijkstra yad nadashtam!
kheili bahale bekhunin bekhandin
 "makhsusan un tabe e "na
پاسخ:
احسنت ! :))
لطفن یه نگاه هم به این بندازین رو 3 W خورد من هرچی فک کردم نفهمیدم مشکلشو..... :( 
ممنون
http://pastebin.ubuntu.com/1503384/
۱۷ دی ۹۱ ، ۲۳:۴۳ علیرضا امانی
به بنیامین:
نه خیر
پوششی بود که از لحن صحبت لو نریم که البته بعضی دوستان که اسمشونو نیارم بهتره ما رو لو دادن رفت! (اصن نمیگم خودت منو لو دادی ها!!)

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی