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 |
附代码//============================================================================ // Name : sorting.cpp // Author : liumeng // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include<algorithm> #include<fstream> #include<queue> using namespace std; #define M 26 int a[M][M]; int d[M]; int dc[M]; int rd[M]; int r[M]; queue<int> q; bool only; bool cycle; void compute(int n){ only=true; cycle=false; for (int i = 0; i < n; ++i) { dc[i]=rd[i]; if(dc[i]==0){ q.push(i); } } int count=0; while(1){ if(q.empty()){ break; } if(q.size()>1){ only=false; } int t=q.front(); q.pop(); r[count++]=t; for (int j = 0; j < d[t]; ++j) { dc[a[t][j]]--; if(dc[a[t][j]]==0){ q.push(a[t][j]); } } } if(count<n){ cycle=true; } } int main() { // cout << "Hello World!!!" << endl; // prints Hello World!!! int n,m; // ifstream cin("a"); while(1){ char buf[10]; cin>>n>>m; if(n==0&&m==0){ return 0; } for (int i = 0; i < n; ++i) { d[i]=0; rd[i]=0; } char A='A'; int i; for (i = 1; i <=m; ++i) { char c,e,gb; cin>>c>>e>>gb; int u=c-A; int v=gb-A; a[u][d[u]++]=v; rd[v]++; compute(n); if(cycle){ cout<<"Inconsistency found after "<<i<<" relations."<<endl; break; } else if(only){ cout<<"Sorted sequence determined after "<<i<<" relations: "; for (int var = 0; var < n; ++var) { char c=A+r[var]; cout<<c; } cout<<"."<<endl; break; } } if(i==m+1){ cout<<"Sorted sequence cannot be determined."<<endl; } for (int var = i; var <=m; ++var) { cin.getline(buf,10); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator