Submission #1288586

#TimeUsernameProblemLanguageResultExecution timeMemory
1288586Faisal_SaqibPaths (BOI18_paths)C++20
100 / 100
268 ms154336 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int K=6,N=3e5+2; int code[N]; int dp[K][N][32]; int main() { ios::sync_with_stdio(0); cout.tie(0);cin.tie(0); int n,m,k; cin>>n>>m>>k; for(int i=1;i<=n;i++) { int c; cin>>c; c--; code[i]=(1<<c); // one vertex length path ending at i dp[1][i][code[i]]=1; } vector<pair<int,int>> edg; for(int i=0;i<m;i++) { int x,y; cin>>x>>y; edg.push_back({x,y}); } ll ans=0; for(int i=2;i<=k;i++) { for(auto yp:edg) { int x=yp.first,y=yp.second; for(int m=0;m<32;m++) { if((m&code[x])==0) dp[i][x][m|code[x]]+=dp[i-1][y][m]; if((m&code[y])==0) dp[i][y][m|code[y]]+=dp[i-1][x][m]; } } for(int v=1;v<=n;v++) { for(int x=0;x<32;x++) { ans+=dp[i][v][x]; } } } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...