日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

codeforces 229C

發布時間:2025/6/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 codeforces 229C 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:?
? ? ? ? http://codeforces.com/problemset/problem/229/C
? ? ? ? 給你一個全圖,分成兩部分,問你這兩個途中一共有多少個三角形.


思路:
? ? ? 如果是一個完整的全圖,那么三角形的個數就是 C(n中取3),那么答案就是C(n中取3)減去被破壞的三角形個數,這個題目關鍵的一點就是全圖,全圖中的每一個點的度數都是n-1,那么在其中的一個圖中的度數是 a的話,另一個圖中的度數就是 n - 1 - a,而每一個圖中點的度數就是他的邊數,想像一下吧兩個圖組合到一起的話就一定會另外形成 a * (n - 1 - a)個三角形,因為假如一個點連出去兩條邊(這兩條邊在兩個圖中),而那兩條邊又一定會被一條邊相連接(因為是全圖),就這樣根據給的圖就可以算出每一個點所在被破壞三角形的個數,需要注意一點的就是每一個破壞的三角形肯定是一條邊在一個集合,而另兩條邊在另一個集合,那么這個破壞的三角形的三個點就一定是有兩個點既在圖1中有邊,也在圖二中有邊,所以算了兩次,所以要把所有被破壞的三角形個數除以二,在用總的個數減去破壞的個數就是答案..
? ? ??
? ? ??

#include<stdio.h>
#include<string.h>


#define N ?1000000 + 1000


__int64 deg[N];


int main ()
{
? ?int n ,m ,i ,a ,b;
? ?__int64 sum ,s;
? ?while(~scanf("%d %d" ,&n ,&m))
? ?{
? ? ? memset(deg ,0 ,sizeof(deg));
? ? ? for(i = 1 ;i <= m ;i ++)
? ? ? {
? ? ? ? ?scanf("%d %d" ,&a ,&b);
? ? ? ? ?deg[a] ++ ,deg[b] ++;
? ? ? }
? ? ? __int64 nn = n;
? ? ? sum = 0; ??
? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? {
? ? ? ? ?sum += deg[i] * (nn - 1 - deg[i]);
? ? ? }?
? ? ? printf("%I64d\n" ,nn * (nn - 1) * (nn - 2) / 6 - sum / 2);
? ?}
? ?return 0;
}




總結

以上是生活随笔為你收集整理的codeforces 229C的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。