Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
题目简单,陷阱不少,贴ac码#include "stdio.h" #include <iostream> using namespace std; void cmove(int i); bool circle = false; int files[10001], cur, N, maxy = 0,circleout; int main() { int K, count=1,i; bool optineed = false; memset(files, 0, sizeof(files)); cin >> N >> K; for (i = 0; i < K; i++) { int S,j; cin >> S; for (j = 0; j < S; j++) { int temp; cin >> temp; temp>maxy ? maxy = temp : temp; files[temp] = count++; } } files[0] = count-1; for (i = 1; i <= maxy; i++) { if (files[i] != i) { optineed = true; if (files[i] != 0) { cur = i; cmove(i); if (circle) { cmove(circleout); circle = false; } } } if (!optineed&&i == files[0]) { cout << "No optimization needed"; break; } } return 0; } void cmove(int i) { if (files[files[i]] == 0) { files[files[i]] = files[i]; cout << i << " " << files[i]<<"\n"; files[i] = 0; } else{ if (cur == files[i]) { circle = true; for (circleout = 1; files[circleout] != 0; circleout++){} files[circleout] = files[i]; cout << i << " " << circleout << "\n"; files[i] = 0; } else{ cmove(files[i]); files[files[i]] = files[i]; cout << i << " " << files[i] << "\n"; files[i] = 0; } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator