#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD=1000000007;
const ll N=109;
ll n,m,a[N],b[N],k[N],sz[N],ji[10*N],ji_inv[10*N],inv[10*N],f[N][N],cnt=0;//key
vector<ll> to[N];
bool ok[N];
ll C(ll a,ll b){if(a<b) return 0;return ji[a]*ji_inv[a-b]%MOD*ji_inv[b]%MOD;}
ll fang(ll i,ll j,ll k){return C(k,i)*C(i,i+j-k)%MOD;}
void F(ll x){
ll tmp[N]={};sz[x]=1;
for(ll i=0;i<to[x].size();++i)
F(to[x][i]),sz[x]+=sz[to[x][i]];
f[x][0]=1;
for(ll i=0,v;i<to[x].size();++i){
v=to[x][i];
for(ll k=1;k<=sz[x];++k)
for(ll l=0;l<=k;++l)
for(ll m=1;m<=min(k,sz[v]);++m)
tmp[k]+=f[x][l]*f[v][m]%MOD*fang(l,m,k)%MOD,tmp[k]%=MOD;
// cout<<x<<":"<<sz[x]<<" ";
for(ll k=0;k<=sz[x];++k) f[x][k]=tmp[k],tmp[k]=0;
// cout<<"\n";
}
// if(x==4){
// cout<<"x=4:";for(ll i=0;i<=sz[x];++i) cout<<f[x][i]<<" ";
// cout<<"\n";
// }
for(ll i=sz[x];i>=0;--i) f[x][i+1]=f[x][i];
f[x][0]=0;
}
int main(){
cin>>n>>m;
ji[0]=ji[1]=inv[0]=inv[1]=ji_inv[0]=ji_inv[1]=1;
for(ll i=2;i<10*N;++i)//n?
ji[i]=ji[i-1]*i%MOD,
inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD,
ji_inv[i]=ji_inv[i-1]*inv[i]%MOD;
// cout<<fang(1,1,1)<<"\n";
// for(ll i=1;i<=2;++i,cout<<"\n")
// for(ll j=1;j<=2;++j)
// cout<<fang(i,j,2)<<" ";
for(ll i=1;i<=n;++i) k[i]=i;
for(ll i=1;i<=m;++i){
ll x,y;
char c;
cin>>x>>c>>y;
if(c=='<') a[++cnt]=x,b[cnt]=y;
else k[max(x,y)]=min(x,y);
}
for(ll i=1;i<=cnt;++i)
to[k[a[i]]].push_back(k[b[i]]),ok[k[b[i]]]=1;
for(ll i=1;i<=n;++i)
if(k[i]==i&&!ok[i]) to[n+1].push_back(i);
// for(ll i=1;i<=n+1;++i){
// cout<<i<<":";
// for(ll j=0;j<to[i].size();++j) cout<<to[i][j]<<" ";
// cout<<"\n";
// }
F(n+1);ll ans=0;
for(ll i=1;i<=n+1;++i) ans+=f[n+1][i],ans%=MOD;
// for(ll j=1;j<=n;++j) cout<<f[n+1][j]<<" ";
// cout<<"\n";
// for(ll i=1;i<=n;++i,cout<<"\n")
// for(ll j=1;j<=n;++j)
// cout<<f[i][j]<<" ";
cout<<ans;
return 0;
}
错误数据
100 99
1 < 2
1 < 3
1 < 4
2 < 5
5 < 6
6 < 7
7 < 8
6 < 9
9 < 10
2 < 11
10 = 12
2 < 13
4 < 14
3 < 15
11 < 16
15 < 17
17 < 18
14 < 19
8 < 20
2 < 21
10 = 22
6 < 23
11 < 24
16 < 25
21 < 26
21 < 27
6 < 28
26 < 29
18 < 30
10 < 31
3 < 32
1 < 33
17 < 34
16 < 35
32 < 36
18 < 37
16 < 38
17 < 39
1 < 40
34 < 41
27 < 42
4 < 43
23 < 44
22 < 45
3 < 46
28 < 47
5 < 48
19 < 49
35 < 50
29 < 51
50 < 52
35 = 53
51 < 54
6 = 55
16 < 56
5 < 57
37 < 58
20 < 59
41 < 60
51 < 61
7 < 62
45 < 63
62 < 64
38 < 65
61 < 66
4 = 67
14 = 68
7 < 69
10 < 70
7 = 71
33 < 72
31 < 73
55 < 74
54 < 75
54 < 76
36 < 77
65 < 78
41 < 79
51 < 80
25 < 81
66 < 82
5 < 83
77 < 84
8 < 85
4 < 86
72 < 87
55 < 88
58 < 89
56 < 90
29 < 91
24 = 92
40 < 93
14 < 94
66 < 95
62 < 96
12 < 97
43 < 98
89 < 99
57 < 100
正确输出 "12331908"
俺的输出"894535807"