标签:get iostream 不同的 tchar targe code stack lis include
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 }
好的就这样了我还要睡觉,白白。。。
标签:get iostream 不同的 tchar targe code stack lis include
原文地址:https://www.cnblogs.com/hahaha2124652975/p/11125700.html