Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct badch
- {
- int f;
- int s;
- };
- const int INF=100000000;
- int g[5001][5001],n,k,fr,sc;
- bool u[5001];
- badch a[5001];
- long long ans,tmp,bad4=0,bad_soch;
- bool earlier(int v1,int v2)
- {
- return (g[v1][v2]!=INF && g[v1][v2]<g[fr][sc]);
- }
- long long kol_soch_2(int h)
- {
- return (h*(h-1))/2;
- }
- void resh(void)
- {
- const int N = 10000000;
- int lp[N+1];
- vector<int> pr;
- for (int i=2; i<=N; ++i) {
- if (lp[i] == 0) {
- lp[i] = i;
- pr.push_back (i);
- }
- for (int j=0; j<(int)pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
- lp[i * pr[j]] = pr[j];
- }
- }
- long long kol_soch_3(int h)
- {
- long long tmp=h;
- tmp*=(h-1);
- tmp*=(h-2);
- tmp/=6;
- return tmp;
- }
- long long faktorial(int h)
- {
- long long htd=1;
- for(int i=2;i<=h;i++)
- htd*=i;
- return htd;
- }
- long long rec_fact(int h)
- {
- if(h==1)
- return 1;
- else
- return h*rec_fact(h-1);
- }
- long long kol_soch_4(int h)
- {
- long long tmp=h;
- tmp*=(h-1);
- tmp*=(h-2);
- tmp*=(h-3);
- tmp/=24;
- return tmp;
- }
- int find_another_fours()
- {
- int tt=0;
- for(int j=0;j<n;j++)
- {
- int x,y;
- x=a[j].f;
- y=a[j].s;
- if(u[x]==1 && u[y]==1 && earlier(x,y))
- tt++;
- }
- return tt;
- }
- int main()
- {
- cin>>k>>n;
- for(int i=0;i<k;i++)
- for(int j=0;j<k;j++)
- if(i!=j)
- g[i][j]=INF;
- for(int i=0;i<n;i++)
- {
- cin>>a[i].f>>a[i].s;
- a[i].s-=1;
- a[i].f-=1;
- g[a[i].s][a[i].f]=i;
- g[a[i].f][a[i].s]=g[a[i].s][a[i].f];
- }
- ans=k;
- ans+=kol_soch_2(k)+kol_soch_3(k)+kol_soch_4(k);
- bad_soch=n;
- for(int i=0;i<n;i++)
- {
- fr=a[i].f;
- sc=a[i].s;
- bad4=0;
- for(int j=0;j<k;j++)
- {
- if(earlier(fr,j) || earlier(sc,j) || j==fr || j==sc)
- continue;
- bad4++;
- u[j]=1;
- }
- bad_soch+=bad4+kol_soch_2(bad4)-find_another_fours();
- for(int i1=0;i1<k;i1++)
- u[i1]=0;
- }
- cout<<ans-bad_soch;
- return 0;
- }
Add Comment
Please, Sign In to add comment