題目:
對根的度數有限制的最小生成樹;
先忽略根,跑最小生成樹,得到幾個連通塊,再一一與根連上;
然後在限制內用根連出去的邊來使生成樹更小,這需要列舉邊以及用dp維護樹上邊的dfs序之前最大的乙個;
此題用鄰接矩陣比較方便。
改了一晚上,終於發現是混淆了n和cnt,cnt才是點數。
鄰接表失敗版:
#include#include失敗版**如下:#include
#include
#include
using
namespace
std;
int n,m,head[25],ct=1,cnt,ed,fa[25
],cost,reg;
char s1[15],s2[15
];map
mp;struct
n}edge[
50],e[25
];struct
nndp[
25];
bool use[50],use2[50],lk[25],vis[25
];bool cmp(n x,n y)
int find(int
x)void
kruskal()
}}void dfs(int
x)
else
dfs(u);
}}void add(int x,int y,int
z)int
main()
if(mp[s2]==1
)
//edge[++ct]=(mp[s2],head[mp[s1]],x);head[mp[s1]]=ct;
//edge[++ct]=(mp[s1],head[mp[s2]],x);head[mp[s2]]=ct;
add(mp[s2],mp[s1],x);
add(mp[s1],mp[s2],x);
}//for(int i=2;i<=ct;i++)
//printf("w=%d to=%d\n",edge[i].w,edge[i].to);
scanf("
%d",&m);
kruskal();
sort(e+1,e+ed+1
,cmp);
for(int i=1;i<=ed;i++)
}vis[
1]=1
;
for(int i=1;i<=ed;i++)
//for(int i=1;i<=n;i++)
//printf("i=%d v=%d bh=%d\n",i,dp[i].v,dp[i].bh);
//for(int i=1;i<=n;i++)
//printf("dp[%d]=%d\n",i,dp[i].v);
while(reg
}//printf("mx=%d d=%d k=%d\n",mx,d,k);
if(mx<=0)break
; cost-=mx;
use[dp[d].bh]=0
; use2[k]=1
; reg++;
dp[d].v=-1
; memset(vis,
0,sizeof
vis);
vis[d]=1
; dfs(d);
}printf(
"total miles driven: %d\n
",cost);
return0;
}
#include#include#include
#include
#include
#include
using
namespace
std;
int n,m,ct,cnt,fa[250],cost,reg,key[250],mne[250],inf=0x3f3f3f3f
;string
s1,s2;
mapmp;
struct
nedge[
50000
];struct
nndp[
50000
];bool
in[250][250
];int sid[250][250
];bool cmp(n x,n y)
int find(int
x)void
kruskal()
}}void dfs(int x,int
f) }
dfs(u,x);
}}int
main()
scanf("%d
",&m);
kruskal();
//for(int i=1;i<=cnt;i++)
//for(int j=1;j<=cnt;j++)
//if(in[i][j])printf("in[%d][%d]=%d\n",i,j,in[i][j]);
//cout
mne);
for(int i=2;i<=cnt;i++)
}for(int i=1;i<=cnt;i++)//
for(int j=reg+1;j<=m;j++)
dfs(
1,-1
);
int mn=inf;
intd;
for(int i=2;i<=cnt;i++)
}if(mn>=0)break
; cost+=mn;
in[dp[d].u][dp[d].v]=in[dp[d].v][dp[d].u]=0
;
in[1][d]=in[d][1]=1
; }
printf(
"total miles driven: %d\n
",cost);
return0;
}
2 2頂點宣告
2.2 頂點宣告 該小節對頂點宣告的描述絕大多數都取自翁雲兵的 著色器和效果 該文對頂點宣告的描述是我所見到最詳盡最透徹的,這裡向作者表示敬意 到現在為止,我們已經使用自由頂點格式 flexible vertex format fvf 來描述頂點結構中的各分量。但是,在可程式設計管線中,我們的頂點資...
POJ 1639 k度限制生成樹
題意就是求最小生成樹 但是有乙個頂點的度必須不大於k 具體的方法網上都有,但是 寫起來之複雜難以令人想象,我由於 能力還太弱,導致只能看著別人的 重寫一遍,優化了一些部分。1.求出除去k度點的最小生成森林,設森林數為m 2.將這m棵樹與k度點用每棵樹中與k度點距離最短的點相連,生成乙個m度最小生成樹...
Unity Shader (四)頂點程式示例
1 在頂點函式中實現凸起效果 2 漸變及溜光效果 3 頂點扭曲效果 旋轉矩陣去影響頂點 優化繞y軸旋轉的矩陣,除去0與其他項相乘的項 float x cos angle v.vertex.x sin angle v.vertex.z float z sin angle v.vertex.x cos ...