Submission #952855

#TimeUsernameProblemLanguageResultExecution timeMemory
952855koukirocksPaths (BOI18_paths)C++17
23 / 100
1 ms460 KiB
#include <bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0) #define all(x) (x).begin(),(x).end() #define F first #define S second namespace{using namespace std;} typedef long long ll; typedef double db; typedef long double ldb; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll MAX=1e2+10+10,P=1e9+7; const ll INF=0x3f3f3f3f,oo=0x3f3f3f3f3f3f3f3f; int n,m,k; int clr[MAX]; vector<int> G[MAX]; ll dfs(int v,vector<bool>& vis,vector<bool>& has) { // cout<<v<<"\n"; vis[v]=true; has[clr[v]]=true; ll ans=0; for (int i:G[v]) { if (vis[i]) continue; if (has[clr[i]]) continue; ans+=dfs(i,vis,has); } vis[v]=false; has[clr[v]]=false; return ans+1; } int main() { speed; cin>>n>>m>>k; for (int i=1;i<=n;i++) { cin>>clr[i]; } for (int i=0;i<m;i++) { int a,b; cin>>a>>b; G[a].push_back(b); G[b].push_back(a); } ll ans=0; for (int i=1;i<=n;i++) { vector<bool> has(k+1,0); vector<bool> vis(n+1,0); ans+=dfs(i,vis,has); // cout<<"\n"; } cout<<ans-n<<"\n"; 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...