第11章 图论模型与算法
再谈树
无根树转有根数
#includeusing namespace std;const int maxn = 100;vector G[maxn];int n;void read_tree(){ int u,v; scanf("%d",&n); for(int i=0;iconst int maxn = 100;int lch[maxn], rch[maxn]; char op[maxn]; //每个结点的左右子节点编号和字符int nc=0; //结点数int build_tree(char * s,int x,int y){ int i,c1=-1,c2=-1,p=0; int u; if(y-x==1) { //进一个字符建立单独结点 u = ++nc; lch[u]=rch[u]=0; op[u]=s[x]; return u; } for(i=x;ifor(int i=0;i表达式树
const int maxn = 100;int lch[maxn], rch[maxn]; char op[maxn]; //每个结点的左右子节点编号和字符int nc=0; //结点数int build_tree(char * s,int x,int y){ int i,c1=-1,c2=-1,p=0; int u; if(y-x==1) { //进一个字符建立单独结点 u = ++nc; lch[u]=rch[u]=0; op[u]=s[x]; return u; } for(i=x;i例题11-1 公共表达式消除 uva12219
#includeusing namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 105;struct Edge { int u,v,cost; bool operator < (const Edge& a) const { return cost > a.cost; }};int F[MAXN];int n,m;vector edges;int find(int x){ return x==F[x]?x:F[x]=find(F[x]);}int kruskal(int k){ for(int i=0;i<=n;i++) F[i]=i; int cnt=0; int minn=INF,maxn=0; for(int i=k;i例题11-3 买还是建 uva1151
#includeusing namespace std;const int maxn = 1005;struct point { int x,y;}pp[maxn];struct edge{ int s,e,dist;}l[maxn*maxn];int n,q,m;int p[maxn];vector g[10];int c[10];int distance_(point a,point b){ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}bool cmp(edge a,edge b){ return a.dist < b.dist;}int find_(int x){ return p[x]==x?x:p[x]=find_(p[x]);}bool merge_(int a,int b){ int x=find_(a); int y=find_(b); if(x==y) return false; p[x]=y; return true;}int kruskal(){ int ans=0; int num=0; for(int i=0;i>j)&1)) continue; cost += c[j]; for(int k=0;kDijkstra算法:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~