【题解】【总结】P1330 封锁阳光大学 &&图论小总结

这道题其实有一点点难度,不过我能经过思考做出来说明还是没有普及组\(D1T1\)难度的。

考虑一条边的两边要有且仅有一个点被选中...这不就是染色吗?想到此,聪明的你一定就知道怎么做了。

这题唯一的坑点就是不一定图是联通的,所以要\(for\)一下所有点去\(bfs\)。

这种题我还\(wa\)了一次,而且如果不是我下了数据还调不出来...

思考一下为什么没有一遍过此题,还是因为思维不够完善。图论的题目,有什么坑点呢?在这里总结一下:

  • 图不联通。有这个图的连通性意识就不会被坑。这里包括了森林的情况。
  • 有自环的重边。这个是毒瘤出题人干的事情,不能被坑了。
  • 存在负环,要判断一下。
  • 树的根被指定了!
  • 边数可能比你想像的要多。
  • \(spfa\)已经死了QAQ!
  • \(fr\)和\(to\)的位置调换了。凉心出题人!

解决图论的问题,可以通过什么办法呢?

  • \(Tarjin\)求环求强连通分量。
  • 最短路算法。(还有那种取对数的)
  • 缩点+\(DAG\) \(DP\)
  • 拓扑排序
  • 并查集
  • 最小生成树,实际上和拟阵联系起来。
  • 树形\(dp\),实际上和上面那个很像的
  • 树上倍增。\(lca\),\(st\)表啊之类的。
  • 树上差分。我也不是很熟。
  • 点分治。解决树上路径计数问题等。
  • 树链剖分。同样也是树上路径,还可以顺便解决子树等问题。
  • 树上莫队。神奇的算法。
  • 正难则反!图论的题维护加边比较容易,维护减边就比较麻烦。反着来!
  • 网络流。(主要是建模难 QAQ)
#include<bits/stdc++.h>

using namespace std;
#define RP(t,a,b) for(register int t=(a),edd=(b);t<=edd;++t)
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;--t)
#define ERP(t,a) for(register int t=head[a];t;t=e[t].nx)
#define Max(a,b) ((a)<(b)?(b):(a))
#define Min(a,b) ((a)<(b)?(a):(b))
#define midd register int mid=(l+r)>>1
#define TMP template < class ccf > TMP inline ccf qr(ccf b){
char c=getchar();
int q=1;
ccf x=0;
while(c<48||c>57)
q=c==45?-1:q,c=getchar();
while(c>=48&&c<=57)
x=x*10+c-48,c=getchar();
return q==-1?-x:x;
}
const int maxn=10005;
const int maxm=100005;
struct E{
int to,nx;
}e[maxm<<1];
int head[maxn];
int col[maxn];
int cnt;
int n,m; inline void add(int fr,int to,bool f){
e[++cnt]=(E){to,head[fr]};
head[fr]=cnt;
if(f)
add(to,fr,0);
} queue < int > q;
inline int bfs(int S){
q.push(S);
col[S]=-1;
int colcnt=0,tolcnt=0;
while(!q.empty()){
register int now=q.front();
colcnt+=(col[now]==1);
tolcnt++;
q.pop();
ERP(t,now)
if(col[e[t].to]!=0&&col[e[t].to]!=-col[now])
return -1;
else
if(col[e[t].to]==0)
q.push(e[t].to),col[e[t].to]=-col[now];
}
return Min(colcnt,tolcnt-colcnt);
} int main(){
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
n=qr(1);
m=qr(1);
for(register int t=1,t1,t2;t<=m;++t){
t1=qr(1);
t2=qr(1);
add(t1,t2,1);
}
int ans=0,k;
RP(t,1,n)
if(col[t]==0)
if((k=bfs(t))==-1)
return puts("Impossible"),0;
else
ans+=k;
cout<<ans<<endl;
return 0;
}

【总结】图论小总结【题解】P1330封锁阳关大学的更多相关文章

  1. 洛谷P1330 封锁阳光大学(二分图染色)

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  2. 洛谷——P1330 封锁阳光大学

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  3. P1330 封锁阳光大学(染色问题)

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  4. 二分图染色模板(P1330 封锁阳光大学)

    二分图染色模板(P1330 封锁阳光大学) 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校 ...

  5. luogu P1330 封锁阳光大学 x

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  6. P1330 封锁阳光大学——深度优先搜索DFS

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由 \(n ...

  7. 洛谷 P1330 封锁阳光大学题解

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  8. 洛谷P1330 封锁阳光大学 [图论,染色]

    题目传送门 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  9. P1330 封锁阳光大学[搜索+染色]

    题目来源:洛谷 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图 ...

随机推荐

  1. 某考试T1 game

    题目背景 无 题目描述 Alice 和 Bob 在一个圆环上玩游戏.圆环上有 n 个位置,按照顺时针顺序 依次标号为 1 到 n.Alice 和 Bob 分别有一个数字集合,集合中都是在 [1, n− ...

  2. redis--服务器与客户端

    初始化服务器 从启动 Redis 服务器,到服务器可以接受外来客户端的网络连接这段时间,Redis 需要执行一系列初始化操作. 整个初始化过程可以分为以下六个步骤: 初始化服务器全局状态. 载入配置文 ...

  3. ios文件管理

    <Application_Home>/AppName.app This is the bundle directory containing the applicationitself. ...

  4. js CacheQueue

    (function(){ var CacheQueue=function(name,weightValue,maxLength,clearTimerTime){ //public this.name ...

  5. Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery

    18.7.Performing Complete User-Managed Media Recovery 完毕一致性备份,把数据库恢复到当前的scn是最好的结果.能够恢复整个数据库.恢复单个表空间.或 ...

  6. &lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第04章 | 字典

    第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中.键能够使字符.数字.或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每一个键都是由坐标值组 ...

  7. Android · 获取网络图片

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...

  8. Web前端学习攻略

    HTML+CSS: HTML进阶.CSS进阶.div+css布局.HTML+css整站开发. JavaScript基础: Js基础教程.js内置对象常用方法.常见DOM树操作大全.ECMAscript ...

  9. RF ---library

    RF内置库: http://robotframework.org/robotframework/ SSHLibrary:   ---WEB自动化测试 http://robotframework.org ...

  10. Java 调用OPENOFFIC 转换文档类型

    public static void office2PDF(String sourceFile, String destFile) { try { File inputFile = new File( ...