POJ 1926 Pollution
2012-04-03 14:37
197 查看
题意:
给定一个图,注入一定污染物,问最后污染物均分到每个点是多少?
思路:
每个点有固定的入度(入度和出度一样,因为是双向边)。
同一个连通集合里的点,污染物是按入度分配。
因为数据量小,连通集合直接用floyd即可。
其实思路很简单,单色wa很多是有陷阱:
1.孤立点。
2.输入是real number
3.输出每组数组要后面接一个空行。
给定一个图,注入一定污染物,问最后污染物均分到每个点是多少?
思路:
每个点有固定的入度(入度和出度一样,因为是双向边)。
同一个连通集合里的点,污染物是按入度分配。
因为数据量小,连通集合直接用floyd即可。
其实思路很简单,单色wa很多是有陷阱:
1.孤立点。
2.输入是real number
3.输出每组数组要后面接一个空行。
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #define Max(a,b) ((a)>(b)?(a):(b)) #define Min(a,b) ((a)<(b)?(a):(b)) using namespace std; const int N=105; const int inf=(1<<30); int n,m; double a ; bool mat ; bool vis ; int indgree ; void floyd() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i!=j&&mat[i][k]&&mat[k][j]) { mat[i][j]=true; } } void solve() { floyd(); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { if(vis[i]) continue; double sum1=0,sum2=0; vis[i]=true; sum1+=a[i]; sum2+=indgree[i]; for(int j=1;j<=n;j++) { if(!vis[j]&&mat[i][j]) { sum1+=a[j]; sum2+=indgree[j]; //vis[i]=true; } } if(sum2==0) { printf("%.3lf\n",sum1); continue; } double k=(sum1)/sum2; printf("%.3lf\n",k*indgree[i]); for(int j=1;j<=n;j++) { if(!vis[j]&&mat[i][j]) { printf("%.3lf\n",k*indgree[j]); vis[j]=true; } } } printf("\n"); } int main() { int T; scanf("%d",&T); while(T--) { memset(mat,0,sizeof(mat)); memset(indgree,0,sizeof(indgree)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%lf",a+i); int u,v; for(int i=1;i<=m;i++) { scanf("%d%d",&u,&v); if(!mat[u][v]) { mat[u][v]=mat[v][u]=true; indgree[u]++; indgree[v]++; } } solve(); } return 0; }
相关文章推荐
- Poj 1926 Pollution
- poj 1926 Pollution
- (待切)POJ 1926 Pollution 模拟/并查集
- POJ-1926 Pollution
- poj 1926 Pollution 并查集解决污染计算问题
- POJ-1926 Pollution
- POJ 1926 Pollution 直接模拟也能过!!
- zoj 1926 || poj 2328 Guessing Game(水~)
- TOJ 1926 POJ 1548 Robots 贪心 水题 C语言
- poj 1926 All in all
- poj 3627 Bookshelf(水~)
- POJ1273 Drainage Ditches——最大流
- POJ-1149 参考大牛的构图..
- POJ 2342 Anniversary party
- POJ 3253(Fence Repair)
- poj 1050 To the Max 求矩阵中局部矩形区域和最大值
- POJ 1836 Alignment
- poj 1698 Alice's Chance 最大流
- POJ1178 Camlot
- [ACM] poj 3468 A Simple Problem with Integers(线段树,成段更新,懒惰标记)