#include <iostream> using namespace std; const int MAX = 1005; int main() { int n,m; int i,p; int sum,total,num; int k[MAX]; //k[]保存读入的数据 int equal[MAX]; //equal[]记录等式出现的值 int t[MAX]; //t[]记录不等式出现的值 char s; cin >> n >> m; memset(equal,0,(n+1)*sizeof(equal[0])); memset(t,0,(n+1)*sizeof(t[0])); total=0; while(m--) { cin >> p; for(i=1;i<=p*2;++i) cin >> k[i]; cin.get(s); cin.get(s); if(s=='=') { for(i=1;i<=p*2;i++) equal[k[i]]=1; } else if(s=='>') { total++; for(i=1;i<=p;i++) t[k[i]]++; for(i=p+1;i<=2*p;i++) t[k[i]]--; } else if(s=='<') { total++; for(i=1;i<=p;++i) t[k[i]]--; for(i=p+1;i<=2*p;++i) t[k[i]]++; } } sum=0; for(i=1;i<=n;i++)//假币在每个不等式中都应该出现 { if(equal[i]==1) continue; if(t[i]==total||t[i]==-total)//找出每次都出现的假币 { num=i; sum++; } } if(sum==1) cout << num << endl; else cout << 0 << endl; return 0; }
转载于:https://www.cnblogs.com/agpro/archive/2010/07/01/1769311.html