2 条题解
-
1
#include<bits/stdc++.h> using namespace std; string laozhaji; int liangzhiji,leizhujuan[100][100],laobeizha[20],naoziying,toutou[100][100],luzhongjian,shenlin; void dfs(int longxiong,int laxi){ if(leizhujuan[longxiong][laxi]>=1){ return; } leizhujuan[longxiong][laxi]++; luzhongjian++; for(int i=0;i<liangzhiji;i++){ if(laxi==toutou[i][1]){ dfs(longxiong,toutou[i][2]); } } } int main(){ freopen("generate.in","r",stdin); freopen("generate.out","w",stdout); cin>>laozhaji; naoziying=laozhaji.size(); for(int i=0;i<naoziying;i++){ laobeizha[i]=laozhaji[i]-'0'; } cin>>liangzhiji; for(int i=0;i<liangzhiji;i++){ cin>>toutou[i][1]; cin>>toutou[i][2]; } for(int i=0;i<liangzhiji;i++){ luzhongjian=0; dfs(i,laobeizha[i]); shenlin*=luzhongjian; } dfs(1,0); cout<<shenlin; return 0; } /* #include<bits/stdc++.h> #define int long long using namespace std; const int N = 110; const int inf = 0x3f3f3f3f; int c[N][10],a[N],k,b[N][N],ans = 1,leng,sum; void dfs(int step , int num){ if(b[step][num] >= 1){ return; } b[step][num] ++; sum ++; for(int i = 1 ; i <= k ; i ++){ if(c[i][1] == num){ dfs(step , c[i][2]); } } } signed main(){ freopen("generate.in" , "r" , stdin); freopen("generate.out" , "w" , stdout); string s; cin >> s; leng = s.size(); for(int i = 0 ; i < leng ; i ++){ a[i + 1] = s[i] - '0'; } cin >> k; for(int i = 1 ; i <= k ; i ++){ cin >> c[i][1] >> c[i][2]; } for(int i = 1 ; i <= leng ; i ++){ sum = 0; dfs(i , a[i]); ans *= sum; } cout << ans; return 0; } */神临
信息
- ID
- 552
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 232
- 已通过
- 19
- 上传者