本來是想要模擬節點的收縮過程,但是實在是太難做了。後來看了別人的**才想到,其實跟節點的分布沒有關係,只跟與一節點相連的點數有關係(設為x),一秒最多有x個人到達1。可以用並查集,但是我頭鐵就是要dfs,vector超時了,用鄰接表結構體少開了一倍又re了。
#include#include#include#include#include#include#include#include#define mem(a,x) memset(a,x,sizeof(a))
#define s1(x) scanf("%d",&x)
#define s2(x,y) scanf("%d%d",&x,&y)
#define s3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define s4(x,y,z,k) scanf("%d%d%d%d",&x,&y,&z,&k)
#define ff(a,n) for(int i = 0 ; i < n; i++) scanf("%d",a+i)
#define tp(x) printf("x = %d\n",x)
#define ansp(x) printf("%d\n",x)
//inline ll ask(int x)
//inline void add(int x,int d)
#define ls 2*rt
#define rs 2*rt+1
#define lson ls,l,mid
#define rson rs,mid+1,r
#define ll long long
using namespace std;
typedef pairpii;
const ll inf = 0x3f3f3f3f;
const int mx = 1e6+10;
//vectorve[mx];
bool vis[mx];
int te,ans,n,head[mx],tol;
structp[mx*2];
inline void ad(int a, int b)
void dfs(int x)
}int main()
ans = 0;
vis[1] = 1;
//int v;
for(int i = head[1]; i != -1 ; i = p[i].ne)
printf("%d\n",ans);
return 0;
}
牛客 鍊錶分割
編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。new關鍵字之後會建立例項物件,其他的複製都只是引用,比如 new a 建立a的物件 b a...
牛客 鍊錶分割
題目描述 現有一鍊錶的頭指標 listnode phead,給一定值x,編寫一段 將所有小於x的結點排在其餘結點之前,且不能改變原來的資料順序,返回重新排列後的鍊錶的頭指標。public static listnode partition listnode phead,int x else cur ...
牛客小白月賽25 I 十字爆破 鄰接表
題目描述 牛牛在玩乙個遊戲 一共有n行m列共nm個方格,每個方格中有乙個整數。牛牛選擇乙個方格,可以得到和這個方格同行 同列的所有數之和的得分。例如 對於乙個22的方格 1 23 4 牛牛選擇每個方格的得分如下 6 78 9 因為1 2 3 6,1 2 4 7,1 3 4 8,2 3 4 9。現在牛...