Guest User

Untitled

a guest
May 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. struct badch
  5. {
  6.     int f;
  7.     int s;
  8. };
  9. const int INF=100000000;
  10. int g[5001][5001],n,k,fr,sc;
  11. bool u[5001];
  12. badch a[5001];
  13. long long ans,tmp,bad4=0,bad_soch;
  14. bool earlier(int v1,int v2)
  15. {
  16.     return (g[v1][v2]!=INF && g[v1][v2]<g[fr][sc]);
  17. }
  18. long long kol_soch_2(int h)
  19. {
  20.     return (h*(h-1))/2;
  21. }
  22. void resh(void)
  23. {
  24.     const int N = 10000000;
  25.     int lp[N+1];
  26.     vector<int> pr;
  27.    
  28.     for (int i=2; i<=N; ++i) {
  29.     if (lp[i] == 0) {
  30.         lp[i] = i;
  31.         pr.push_back (i);
  32.     }
  33.     for (int j=0; j<(int)pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
  34.         lp[i * pr[j]] = pr[j];
  35.     }
  36. }
  37. long long kol_soch_3(int h)
  38. {
  39.     long long tmp=h;
  40.     tmp*=(h-1);
  41.     tmp*=(h-2);
  42.     tmp/=6;
  43.     return tmp;
  44. }
  45. long long faktorial(int h)
  46. {
  47.     long long htd=1;
  48.     for(int i=2;i<=h;i++)
  49.         htd*=i;
  50.     return htd;
  51. }
  52. long long rec_fact(int h)
  53. {
  54.     if(h==1)
  55.         return 1;
  56.     else
  57.         return h*rec_fact(h-1);
  58. }
  59. long long kol_soch_4(int h)
  60. {
  61.     long long tmp=h;
  62.     tmp*=(h-1);
  63.     tmp*=(h-2);
  64.     tmp*=(h-3);
  65.     tmp/=24;
  66.     return tmp;
  67. }
  68. int find_another_fours()
  69. {
  70.     int tt=0;
  71.     for(int j=0;j<n;j++)
  72.     {
  73.         int x,y;
  74.         x=a[j].f;
  75.         y=a[j].s;
  76.         if(u[x]==1 && u[y]==1 && earlier(x,y))
  77.             tt++;
  78.     }
  79.     return tt;
  80. }
  81.  
  82. int main()
  83. {
  84.     cin>>k>>n;
  85.     for(int i=0;i<k;i++)
  86.         for(int j=0;j<k;j++)
  87.             if(i!=j)
  88.                 g[i][j]=INF;
  89.     for(int i=0;i<n;i++)
  90.     {
  91.         cin>>a[i].f>>a[i].s;
  92.         a[i].s-=1;
  93.         a[i].f-=1;
  94.         g[a[i].s][a[i].f]=i;
  95.         g[a[i].f][a[i].s]=g[a[i].s][a[i].f];
  96.     }
  97.     ans=k;
  98.     ans+=kol_soch_2(k)+kol_soch_3(k)+kol_soch_4(k);
  99.     bad_soch=n;
  100.     for(int i=0;i<n;i++)
  101.     {
  102.         fr=a[i].f;
  103.         sc=a[i].s;
  104.         bad4=0;
  105.         for(int j=0;j<k;j++)
  106.         {
  107.             if(earlier(fr,j) || earlier(sc,j) || j==fr || j==sc)
  108.                 continue;
  109.             bad4++;
  110.             u[j]=1;
  111.         }
  112.         bad_soch+=bad4+kol_soch_2(bad4)-find_another_fours();
  113.         for(int i1=0;i1<k;i1++)
  114.             u[i1]=0;
  115.     }
  116.     cout<<ans-bad_soch;
  117.     return 0;
  118. }
Add Comment
Please, Sign In to add comment