| 12345 |
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;int day(const string&s){static const string d[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};for(int i=0;i<7;++i)if(s==d[i])return i;return 0;}int inv7(int x){for(int y=1;y<7;++y)if(x*y%7==1)return y;return 0;}
- int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,m;while(cin>>n>>m&&n+m){vector<vector<int>>a(m,vector<int>(n+1));for(int i=0;i<m;++i){int k;string s,t;cin>>k>>s>>t;a[i][n]=(day(t)-day(s)+1+7)%7;while(k--){int x;cin>>x;a[i][x-1]=(a[i][x-1]+1)%7;}}int row=0;vector<int>where(n,-1);for(int col=0;col<n&&row<m;++col){int p=row;while(p<m&&a[p][col]==0)++p;if(p==m)continue;swap(a[p],a[row]);int z=inv7(a[row][col]);for(int j=col;j<=n;++j)a[row][j]=a[row][j]*z%7;for(int i=0;i<m;++i)if(i!=row&&a[i][col]){int f=a[i][col];for(int j=col;j<=n;++j)a[i][j]=(a[i][j]-f*a[row][j]%7+7)%7;}where[col]=row++;}bool bad=false;for(int i=row;i<m;++i)if(a[i][n])bad=true;if(bad)cout<<"Inconsistent data.\n";else if(row<n)cout<<"Multiple solutions.\n";else{for(int i=0;i<n;++i){int x=a[where[i]][n];if(x<3)x+=7;cout<<x<<(i+1==n?'\n':' ');}}}}
|