Submission #1301264

#TimeUsernameProblemLanguageResultExecution timeMemory
1301264Faisal_SaqibŠarenlist (COCI22_sarenlist)C++20
10 / 110
1 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=70,mod=1e9+7;
int d[N][N];
int f(int x)
{
  return ((x*(x-1))/2)%mod;
}
int powmod(int x,int y)
{
  int ans=1;
  while(y)
  {
    if(y&1)ans=(ans*x)%mod;
    // cout<<x<<' '<<y<<' '<<ans<<endl;
    y>>=1;
    x*=x;
    x%=mod;
  }
  return ans;
}
int32_t 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++)
  {
    for(int j=1;j<=n;j++)
    {
      d[i][j]=1e9*(i!=j);
    }
  }
  for(int i=1;i<n;i++)
  {
    int x,y;
    cin>>x>>y;
    d[x][y]=1;
    d[y][x]=1;
  }
  for(int m=1;m<=n;m++)
  {
    for(int s=1;s<=n;s++)
    {
      for(int e=1;e<=n;e++)
      {
        d[s][e]=min(d[s][e],d[s][m]+d[m][e]);
      }
    }
  }
  int tot=powmod(k,n-1),tp=0;
  while(m--)
  {
    int x,y;
    cin>>x>>y;
    int t=d[x][y];
    tp+=(k*powmod(k,n-1-t))%mod;
    tp%=mod;
  }
  cout<<((tot+mod-tp)%mod)<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...