P3275 [SCOI2011]糖果
Posted hahaha2124652975
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3275 [SCOI2011]糖果相关的知识,希望对你有一定的参考价值。
emmmm博客补不完喽~~~(其实这是题目链接,但。。也确实是事实。。)
这题呢,也基本上就是差分约束的模板题了(要是不知道差分约束的话自行百度一下喽~~),实际上这类题目吧,撇开读入,基本都一样,就是跑几遍最短路,但是不得不说这个差分约束的读入真的是多种多样,就没见过两题的读入能一样的。。
反正就是对于不同的数据进行建图,具体的还是看代码吧嘤嘤嘤~~
1 #include<set> 2 #include<map> 3 #include<list> 4 #include<queue> 5 #include<stack> 6 #include<string> 7 #include<cmath> 8 #include<ctime> 9 #include<vector> 10 #include<bitset> 11 #include<memory> 12 #include<utility> 13 #include<cstdio> 14 #include<sstream> 15 #include<iostream> 16 #include<cstdlib> 17 #include<cstring> 18 #include<algorithm> 19 using namespace std; 20 21 int n,k,tot; 22 long long ans; 23 int head[300005],next[300005],to[300005],w[300005],dis[300005],used[300005]; 24 bool vis[300005]; 25 queue<int>q;//堆优化 26 27 inline int get()//快读 28 char c=getchar(); 29 int res=0; 30 while (c<‘0‘||c>‘9‘) c=getchar(); 31 while (c>=‘0‘&&c<=‘9‘) 32 res=(res<<3)+(res<<1)+c-‘0‘; 33 c=getchar(); 34 35 return res; 36 37 38 void add(int u,int v,int c)//链式前向星 39 to[++tot]=v; 40 next[tot]=head[u]; 41 head[u]=tot; 42 w[tot]=c; 43 44 45 int main() 46 n=get(); 47 k=get(); 48 while(k--) 49 int u,v,c; 50 c=get(),u=get(),v=get();//读入,并在下面对不同的数据进行分组处理 51 if(c==1) 52 add(u,v,0); 53 add(v,u,0); 54 55 else if(c==2) 56 if(u==v) 57 printf("-1\n"); 58 return 0; 59 60 add(u,v,1); 61 62 else if(c==3) 63 add(v,u,0); 64 65 else if(c==4) 66 if(v==u) 67 printf("-1\n"); 68 return 0; 69 70 add(v,u,1); 71 72 else if(c==5)add(u,v,0); 73 74 for(int i=n;i>=1;i--) 75 add(0,i,1);//处理非连通图的情况 76 77 vis[0]=1,q.push(0);//直接跑spfa 78 while(!q.empty()) 79 int u=q.front(); 80 q.pop(); 81 vis[u]=0; 82 if(used[u]==n-1) 83 printf("-1\n"); 84 return 0; 85 86 used[u]++; 87 for(int i=head[u];i;i=next[i]) 88 if(dis[to[i]]<dis[u]+w[i]) 89 dis[to[i]]=dis[u]+w[i]; 90 if(!vis[to[i]]) 91 vis[to[i]]=1; 92 q.push(to[i]); 93 94 95 96 97 for(int i=1;i<=n;i++) 98 ans+=dis[i]; 99 100 printf("%lld\n",ans);//输出,结束 101 return 0; 102
好的就这样了我还要睡觉,白白。。。
以上是关于P3275 [SCOI2011]糖果的主要内容,如果未能解决你的问题,请参考以下文章