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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【2018.5.12】模拟赛之三-ssl2415 连通块【并查集】

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2018.5.12】模拟赛之三-ssl2415 连通块【并查集】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題


題目大意

在一個n*n的棋盤上進行m此操作。在一個格子上放一個黑或白的棋子。多個相連的同色棋子形成一個連通塊,求每次操作后求連通塊數。


解題思路

并查集表示連通,然后每次擴展,如果有同色的就連通,注意判斷已經是同一個連通塊的情況。


代碼

#include<cstdio> using namespace std; int n,m,s,c,x,y,color[601][601],father[250001]; int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; int find(int x) {return x==father[x]?x:find(father[x]);} //找祖先 int number(int x,int y) {return (x-1)*n+y;}//求號 bool unionn(int x,int y) {int fa=find(x),fb=find(y);if (fa==fb) return 0;if (fa<fb) father[fb]=fa;else father[fa]=fb;return 1; }//相連并放回是否已經在同一連通塊 int main() {//freopen("blocks.in","r",stdin);f//reopen("blocks.out","w",stdout);scanf("%d%d",&n,&m);for (int i=1;i<=n*n;i++) father[i]=i;s=0;for (int i=1;i<=m;i++){scanf("%d %d %d",&c,&x,&y);c++;color[x][y]=c;//標記s++;//連通塊增加for (int k=0;k<4;k++){int zx=x+dx[k],zy=y+dy[k];if (zx>0&&zx<=n&&zy>0&&zy<=n&&color[x][y]==color[zx][zy]){if(unionn(number(x,y),number(zx,zy)))s--;//合并(注意判斷是否在同一連通塊)}}printf("%d\n",s);} }

對拍

隨機數據與暴力

#include<cstdio> #include<ctime> #include<cstdlib> #include<string> #include<iostream> #include<map> #define random(x) rand()%x+1 using namespace std; int n,m,s,color[501][501],c,x,y,e[501][501]; bool f[501][501]; void bfs(int x,int y,int c,int w) {if (x>n || y>n || x<1 || y<1 || color[x][y]>c || !color[x][y])return;if (f[x][y] || e[x][y]!=w) return;f[x][y]=true;bfs(x+1,y,c,w);bfs(x-1,y,c,w);bfs(x,y+1,c,w);bfs(x,y-1,c,w); } int main() {freopen("blocks.in","w",stdout);srand((unsigned)time(0));n=random(500);m=random(n*n);printf("%d %d\n",n,m);for (int i=1;i<=m;i++){c=random(2)-1;x=random(n);y=random(n);while (color[x][y]){x=random(n);y=random(n);}printf("%d %d %d\n",c,x,y);color[x][y]=i;e[x][y]=c;}fclose(stdout);freopen("blocks.ans","w",stdout);for (int k=1;k<=m;k++){memset(f,0,sizeof(f));s=0;for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (!f[i][j] && color[i][j]<=k && color[i][j]){bfs(i,j,k,e[i][j]);s++;}printf("%d\n",s);}fclose(stdout); }

對拍

#include<cstdio> #include<ctime> #include<cstdlib> #include<cstring> using namespace std; int main() {for (int t=1;t<=100000;t++){system("blocksdata.exe");double st=clock();system("blocks.exe");double ed=clock();if (system("fc blocks.out blocks.ans")){printf("WA");return 0;}elseprintf("AC point:%d time:%.0lfms\n",t,ed-st);} }

總結

以上是生活随笔為你收集整理的【2018.5.12】模拟赛之三-ssl2415 连通块【并查集】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 无码人妻精品一区二区蜜桃网站 | 日本高清精品 | 欧美猛交免费 | 浪浪视频在线观看 | 国产在线观看成人 | 天海翼一二三区 | 午夜视频在线观看免费视频 | 青青久在线视频 | 亚洲xx视频| 亚洲精品国产a | 久久精品中文字幕 | 香蕉视频在线观看黄 | 国产日批视频 | 手机在线观看毛片 | 鲁一鲁一鲁一鲁一av | 色综合视频在线观看 | 黄色欧美视频 | 中文字幕亚洲专区 | 丰满大乳奶做爰ⅹxx视频 | 在线看免费毛片 | 日韩中文字幕在线一区 | 日韩欧美在线视频播放 | 婷婷六月综合 | 久久99日韩| 大陆女明星乱淫合集 | av在线免费不卡 | 日韩精品一 | 日韩精品在线免费视频 | 中文在线a√在线 | 亚洲AV午夜精品 | 国产99久久久国产精品免费看 | 性网爆门事件集合av | 另类专区成人 | 青青草偷拍视频 | 色小说在线观看 | 国产女主播一区二区 | 亚洲天堂第一页 | 97夜色| 亚洲欧美网站 | 男人天堂2014 | av老司机在线 | 国产精品免费一区二区三区 | 99视频在线精品免费观看2 | 亚洲国产精品无码久久久久高潮 | 粉嫩av一区二区三区免费观看 | 日韩黄色一级片 | 成人欧美一区二区三区黑人动态图 | 手机在线看片日韩 | 午夜精品一二三区 | 亚洲性自拍 | 伊人av网| 一级黄色大片 | 精品国产一二三四区 | 伊人激情网 | 日本性xxxxx| 日韩专区av | 美腿丝袜亚洲综合 | 性网站在线观看 | aaa一区二区| 国产成人无码精品亚洲 | 国语对白 | 国产精品久久久久久久久借妻 | 久色视频在线 | 色女孩综合 | 少妇性bbb搡bbb爽爽爽欧美 | 高清成人免费视频 | 亚洲精品一区在线观看 | 亚洲最大黄网 | 久久影业| 碰在线视频 | 亚洲一区av | 17c一起操| 午夜视频在线观看国产 | 欧美人与性动交xxⅹxx | 一区二区视频在线观看 | 韩日在线| 成人天堂| 波多野结衣乳巨码无在线 | 一级淫片免费看 | 天天爽av | 精品熟妇视频一区二区三区 | 污在线观看 | 久久久久久久香蕉 | 狼人狠狠干 | 男人的网址 | 天码人妻一区二区三区在线看 | 国产在线视频不卡 | 国产精品白丝喷水在线观看 | 欧美a网站| 在线手机av | 日韩激情片| 中文字幕无线精品亚洲乱码一区 | 奇米777色| 97干在线视频 | 日日草草 | 亚洲国产三级 | 红桃一区二区三区 | 欧美xxxx69| 日批动态图 |