【图论】大总结★★★★★
来源:互联网 发布:攻城掠地神兵锻造数据 编辑:程序博客网 时间:2024/06/12 00:07
cin>>N;memset(map,10,sizeof(map));for(int i=1;i<=N;i++){int x,y,v;cin>>x>>y>>v;map[x][y]=map[y][x]=v;}
struct edge{int y,v,next;/* y表示这条边的终点编号,v是权值,next表示同起点下条边的编号是多少*/}e[MAXN];int linkk[...],N,M,t=0void insert(int xx,int yy,int vv){e[++t].next=linkk[xx];linkk[xx]=t,e[t].y=yy,e[t].v=vv;}int main(){cin>>N>>M;for(int i=1;i<=M;i++){int x,y,v;cin>>x>>y>>v;insert(x,y,v);}}
struct bian/*适用于稀疏图*/{int x,y,v;}e[MAXN];int sum=0;void init(){cin>>N;for(int i=1;i<=N;i++){int a,b,c;cin>>a>>b>>c;e[++sum].x=a,e[X].y=b,e[X].v=c;e[++sum].x=b,e[X].y=a,e[X].v=c;}}
void dfs(int k){f[k]=0;for(int i=1;i<=N;i++)if(map[k][i]&&f[i])dfs(i);}
void bfs(int k){q[1]=k;int head=0,tail=1;while(head++<tail)for(int i=L[q[head]];i!=0;i=e[i].next)if(f[e[i].y])tail++,q[tail]=e[i].y,f[e[i].y]=0;}int main(){
ios::sync_with_stdio(false);init();for(int i=1;i<=N;i++)if(f[i]){bfs(i);sum++;}}
void floyed(){for (int k=1;k<=n;k++)for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)d[i][j] = min( d[i][j],d[i][k]+d[k][j] );}
注:dijkstra不能有负权回路。void dijkstra(int st){for(int i=1;i<=n;i++) dis[i]=a[st][i];memset(f,false,sizeof(f));f[st]=true;
dis[st]=0;for(int i=1;i<n;i++){int min=1000000000,k=0;for(int j=1;j<=n;j++)if(!f[j]&&(dis[j]<min))min=dis[j],k=j;if(k==0) return;f[k]=true;for(int j=1;j<=n;j++)if(!f[j]&&(dis[k]+a[k][j]<dis[j])) dis[j]=dis[k]+a[k][j]; }}
bool Bellman_ford(int st){memset(dis,10,sizeof(dis));dis[st]=0;bool f=0;for(int i=0;i<=N;i++){f=0;for(int j=1;j<=X;j++)if(dis[map[j].x]+map[j].v<dis[map[j].y]){dis[map[j].y]=dis[map[j].x]+map[j].v;f=1;}if(!f)return 0;//没有一次松弛,结束。}return 1;//迭代了N次,有负环。}
void SPFA(){memset(d,10,sizeof(d));int head=0,tail=0;f[st]=1;d[st]=0;q[++tail]=st;while (head++<tail){for (int j=l[q[head]];j;j=e[j].next)if (d[e[j].y]>d[q[head]]+e[j].w){ d[e[j].y]=d[q[head]]+e[j].w; //松弛if (!f[e[j].y])q[++tail]=e[j].y,f[e[j].y]=1; //进队}f[q[head]]=0; //出队标记}
void init(){cin>>n;memset(a,10,sizeof(a));for(int i=1;i<=n;i++){ vis[i]=false;for(int j=1;j<=n;j++)cin>>a[i][j];}}void Prim(int s){memset(dis,10,sizeof(dis));for(int i=1;i<=n;i++)dis[i]=a[s][i];memset(vis,0,sizeof(vis));vis[s]=1;sumn=0;for(int i=2;i<=n;i++){int minn=a[0][0],c=0;for(int j=1;j<=n;j++)if((!vis[j])&&(dis[j]<minn)){minn=dis[j];c=j;}vis[c]=1;sumn+=minn;for(int j=1;j<=n;j++)if((!vis[j])&&(a[c][j]<dis[j]))dis[j]=a[c][j];}}
void Kruskal(){for (int i=1;i<=n;i++)father[i]=i;sort(e+1,e+len+1,mycmp);int c=0;for (int i=1;i<=len;i++){int v=getfather(e[i].start);int u=getfather(e[i].end);if (v!=u){merge(v,u);sum+=e[i].v;if (++c==n-1)}}}
void topsort(){head=tail=0;for(int i=1;i<=n;i++)if(id[i]==0) q[++tail]=i;while(head++<tail)for(int i=1;i<=n;i++)if(a[q[head]][i]){id[i]--;if(id[i]==0) q[++tail]=i;}}
- 【图论】大总结★★★★★
- ★各大搜索引擎网站登录入口
- ★大学BBS十大经典搞笑签名★
- ★给年轻工程师十大忠告--之二★(
- ★帮你免于失业的十大软件技术
- 给年轻工程师的十大忠告--之三★
- ★ C文件操作一些总结
- ★CMM总结:五层结构图(★中文★)
- ★★★易忘点总结〖代理〗
- ★★★易忘点总结〖多线程〗
- ★★★易忘点总结〖面向对象〗
- ★★★易忘点总结〖集合〗
- ★★★易忘点总结〖JavaScript〗
- ★★★易忘点总结〖反射〗
- ★★★总结〖交通灯管理系统〗
- ★★★总结〖银行业务调度系统〗
- ★★★易忘点总结〖Java语法基础〗
- ★★★易忘点总结〖类加载器〗
- NOIP夏令营day5课程总结
- 多处最优服务次序问题
- 2014 Multi-University Training Contest 7 1003 1005
- zoom:1和overflow:auto清除浮动
- NOIP夏令营day6课程总结
- 【图论】大总结★★★★★
- 2014年3月usaco总结
- 2014.4.26 HAOI总结及感受
- 关于对HAOI2014四道题的吐槽(非专业吐槽)
- 赛门铁克VCS(Veritas Cluster Server)双机日常管理
- some tips
- google代理
- JVM笔记——调优案例分析与实战
- poj 3080 Blue Jeans (kmp暴力)