CA4.pdf

‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ ۳ :‬تیر‬
‫تمرین کامپیوتری چهارم‬
‫نکات مهم‬
‫لطفاً به نکات زیر توجه فرمایید‪:‬‬
‫‪‬‬
‫مهلت انجام این تمرین تا ‪ ۳‬تیر ‪ ۹۳‬است‪.‬‬
‫‪‬‬
‫شما باید برنامه های خود را که به زبان ‪ C++‬نوشته شده است را در سامانه قاضی برنامه درس ساختمان داده و الگوریتم شریف که‬
‫در آدرس زیر قرار دارد وارد کنید و برنامه شما باید بتواند تمام آزمونهای تعیین شده را بگذراند‪ .‬در غیر این صورت نمره کامل را‬
‫دریافت نخواهید کرد‪.‬‬
‫آدرس سامانه قاضی برنامه‪:‬‬
‫‪http://judge.ce.sharif.ir/93-94-2/ce254-3/‬‬
‫‪‬‬
‫در مجموع برای تمام تمرینهای عملی درس ‪ ۱۱‬روز زمان تاخیر وجود دارد که میتوانید در تمرینها از این فرصت اضافی نیز استفاده‬
‫کنید و در صورت تاخیر بیشتر با تناسب به میزان آن از کل تمرینات به میزان خاصی نمره کم خواهد شد‪ (.‬مثال به ازای هر روز ‪٪۵‬‬
‫از کل نمره بخش تمرینات عملی کم میشود)‬
‫‪‬‬
‫در صورت وجود ابهام در سواالت آن را با مهرنوش میرطاهری در میان بگذارید‪.‬‬
‫‪1‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ ۳ :‬تیر‬
‫تمرین کامپیوتری چهارم‬
‫مسئله ‪ :۱‬حمله به کشور دور‬
‫محدودیت زمانی‪ ۲۰۰ :‬میلی ثانیه‬
‫کشور دور مورد تهاجم کشور تنبل ها قرار گرفته است‪ .‬ارتش تنبل ها وارد کشور دور شده و قصد دارد هر شهری را که می تواند غارت کند‪ .‬بین‬
‫شهرهای کشور دور راه هایی کوهستانی با شیب های مختلف وجود دارد اما سربازان ارتش دور به دلیل تنبلی فقط راه هایی را انتخاب می کنند‬
‫که در مجموع کمترین شیب ممکن را طی کنند! متاسفانه پادشاه کشور دور با محدودیت سرباز مواجه است‪ .‬پس تصمیم گرفته که سربازان خود‬
‫را در شهرهای پراهمیت مستقر کند‪ .‬او پس از مشورت با وزیران خود به این نتیجه می رسد که شهری پر اهمیت است که تعداد زیادی از‬
‫مسیرهایی که ارتش تنبلها انتخاب میکنند از آن بگذرد‪.‬‬
‫حال شما باید به او کمک کنید و به او بگویید از هر شهر چه تعدادی از این مسیرها می گذرد‪.‬‬
‫ورودی‪:‬‬
‫در خط اول ‪ )1 ≤ 𝑛 ≤ 100( n‬تعداد شهرها و ‪ 1 ≤ 𝑚 ≤ 10000 m‬تعداد راههای کوهستانی بین شهرهاست‪ .‬سپس در ‪ m‬خط بعدی‬
‫در هر خط سه عدد ‪ j ،i‬و ‪ w‬می آید که مشخص میکند شهر ‪i‬ام به شهر ‪j‬ام مسیری کوهستانی با شیب ‪ w‬وجود دارد‪ .‬توجه کنید که مسیرها‬
‫یکطرفه میباشند‪.‬‬
‫خروجی‪:‬‬
‫در خروجی در سطر ‪i‬ام تعداد مسیرهایی که راس ‪i‬ام روی آنها قرار دارد نمایش داده میشود‪ .‬توجه کنید که در محاسبه این مقدار مسیرهایی‬
‫که راس ‪ i‬در ابتدا یا انتهای آن واقع است شمرده نمیشوند‪.‬‬
‫نمونه ورودی‪:‬‬
‫‪54‬‬
‫‪1 2 64030‬‬
‫‪2 3 248393‬‬
‫‪3 4 31583‬‬
‫‪5 1 362418‬‬
‫نمونه خروجی‬
‫‪3‬‬
‫‪4‬‬
‫‪3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪2‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ ۳ :‬تیر‬
‫تمرین کامپیوتری چهارم‬
‫‪3‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ ۳ :‬تیر‬
‫تمرین کامپیوتری چهارم‬
‫مسئله ‪ :۲‬خانه هزاراتاق‬
‫محدودیت زمانی‪ ۲۰۰ :‬میلی ثانیه‬
‫خالهریزه به تازگی یک خانه هزار اتاق خریداری کردهاست‪ .‬این خانه تعداد زیادی اتاق دارد‪ .‬که ما بین هر دو اتاق حداکثر یک در وجود دارد‪.‬‬
‫اما نحوه قرارگرفتن درها طوری است که از هر اتاقی میتوان به اتاق دیگری رفت و هر در شامل تعدادی قفل است‪ .‬متاسفانه خاله ریزه هنگام‬
‫تحویل خانه فراموش کرده است کلید اتاقهای خانه را از صاحب قبلی خانه تحویل بگیرد‪ .‬از طرفی چون برای خرید خانه جدید تمام پولش را‬
‫خرج کردهاست مجبور است مجبور است در نهایت صرفهجویی تعدادی از درها را انتخاب کرده و برای آنها کلید بسازد طوری که بتواند بین‬
‫همه اتاقها رفتوآمد کند‪.‬‬
‫اگر هزینه ساختن کلید برای هر قفل یک دالر باشد شما باید به خاله ریزه کمک کنید و کمترین مقدار پولی که برای تهیه کلیدها الزم است را‬
‫محاسبه کنید‪.‬‬
‫ورودی‪:‬‬
‫در خط اول ‪ )1 ≤ 𝑛 ≤ 1000( n‬تعداد اتاقهای موجود در خانه خالهریزه و ‪ 1 ≤ 𝑚 ≤ 100000‬تعداد درهای موجود بین این اتاقهاست‪.‬‬
‫سپس در ‪ m‬خط بعدی در هر خط سه عدد ‪ j ،i‬و ‪ w‬میآید که مشخص میکند بین اتاق شماره ‪ i‬و اتاق شماره ‪ j‬دری با ‪ w‬قفل وجود دارد‪.‬‬
‫خروجی‪:‬‬
‫در تنها خط خروجی کمترین میزان هزینه ساختن کلید برای قفلها به طوری که بتوان بین همه اتاقها رفت و آمد کرد را چاپ کنید‪.‬‬
‫نمونه ورودی‪:‬‬
‫‪33‬‬
‫‪2 1 67‬‬
‫‪3 1 46‬‬
‫‪3 2 75‬‬
‫نمونه خروجی‪:‬‬
‫‪113‬‬
‫‪4‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ ۳ :‬تیر‬
‫تمرین کامپیوتری چهارم‬
‫مسئله ‪ :۳‬شرکت هواپیمایی‬
‫محدودیت زمانی‪ ۲۰۰ :‬میلی ثانیه‬
‫یک شرکت هواپیمایی نحوه جابه جایی مشتریان خود را در خطوط هوایی بررسی کرده است و بر اساس این بررسی شهرها را به یک سری حوزه‬
‫هوایی تقسیم کرده است‪ .‬بدین ترتیب که جابه جایی مسافران بین دو شهر که در یک حوزه هوایی قرار دارند (به طور مستقیم یا غیر مستقیم)‬
‫بیشتر تکرار می شود‪ .‬این شرکت هواپیمایی به مناسبت تعطیالت عید برای مشتریان خود این امکان را فراهم کرده است که با خرید تنها یک‬
‫بلیط بتوانند به همه شهرهای که در حوزه هوایی آن شهر قرار دارند سفر کنند‪.‬‬
‫هم چنین نقشه خطوط هوایی خود را که بیشتر توسط مسافران مورد استفاده قرار می گیرد در اختیار مسافران قرار دادهاست‪ .‬الله میخواهد با‬
‫خرید یک بلیط از بیشترین تعداد شهر بازدید کند‪ .‬شما با در اختیار داشتن نقشه هوایی باید لیست تعداد بیشترین شهرهایی که او میتواند ببیند‬
‫را نمایش دهید‪.‬‬
‫ورودی‪:‬‬
‫در خط اول (‪ )1 ≤ 𝑛 ≤ 1000‬تعداد شهرها و ‪ 1 ≤ 𝑚 ≤ 100000‬تعداد خطوط هوایی موجود بین این شهرهاست‪ .‬سپس در ‪ m‬خط‬
‫بعدی در هر خط دو عدد ‪ i‬و ‪ j‬میآید که مشخص میکند بین شهر ‪ i‬و شهر ‪ j‬خطوط هوایی وجود دارد که بیشتر مورد استفاده مسافران قرار‬
‫میگیرد‪.‬‬
‫خروجی‪:‬‬
‫در تنها خط خروجی تعداد بیشترین شهرها را چاپ کنید‪.‬‬
‫نمونه ورودی‪:‬‬
‫‪55‬‬
‫‪12‬‬
‫‪23‬‬
‫‪34‬‬
‫‪45‬‬
‫‪51‬‬
‫نمونه خروجی‪:‬‬
‫‪5‬‬
‫‪5‬‬