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 |
怎么老wa 不是很难的阿我用vector实现的 就是每当进入一个房间后 这个屋子房门数和来源房间减一~ 对一个新房间 或者 负数 他的来源房间就是前面第一个房门数大于0的房间。 #include <iostream> #include <vector> #include <algorithm> using namespace std; struct room { short doors; short id; short dist; }; void main() { int N,i,j,k; cin>>N; room temp; while(N--) { int seq=0; vector <room> maze; vector <short> adj[100]; while(cin>>temp.doors&&temp.doors) { if(temp.doors>0) { temp.id=seq; seq++; } maze.push_back(temp); } maze[0].dist=0; for(i=1;i<maze.size();i++) { for(j=i-1;j>=0;j--) if(maze[j].doors>0) break; if(maze[i].doors>0) { adj[maze[j].id].push_back(maze[i].id+1); adj[maze[i].id].push_back(maze[j].id+1); maze[i].dist=maze[j].dist+1; maze[i].doors--; } else if(maze[i].doors<0) { int back=maze[j].dist+maze[i].doors; for(k=0;k<maze.size();k++) if(maze[k].dist==back) { adj[maze[j].id].push_back(maze[k].id+1); adj[maze[k].id].push_back(maze[j].id+1); maze[k].doors--; break; } } maze[j].doors--; } for(i=0;i<seq;i++) { sort(adj[i].begin(),adj[i].end()); cout<<i+1<<" "; for(j=0;j<adj[i].size();j++) cout<<adj[i][j]<<" "; cout<<endl; } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator